{"id":10063,"date":"2022-09-22T02:51:24","date_gmt":"2022-09-21T21:21:24","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-what-determines-the-distance-between-two-structure-members\/"},"modified":"2022-09-22T02:51:24","modified_gmt":"2022-09-21T21:21:24","slug":"solved-what-determines-the-distance-between-two-structure-members","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-what-determines-the-distance-between-two-structure-members\/","title":{"rendered":"[Solved] What determines the distance between two structure members?"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-37013014\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"37013014\" data-parentid=\"36990789\" data-score=\"0\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>The reason this outputs <code>4<\/code> has to do with the size of each type and struct padding and alignment.<\/p>\n<p>On my system, <code>sizeof(unsigned int)<\/code> is 4, <code>sizeof(long int)<\/code> is 8, and <code>sizeof(struct test)<\/code> is 24.  So to ensure that the 64-bit field lies on a 64-bit boundary, the structure is physically laid out like this:<\/p>\n<pre><code>struct test\n{\n    unsigned int x;     \/\/ 4 bytes\n                        \/\/ 4 bytes padding\n    long int y;         \/\/ 8 bytes\n    unsigned int z;     \/\/ 4 bytes\n                        \/\/ 4 bytes padding\n};\n<\/code><\/pre>\n<p>So when you take the difference between the offset of <code>x<\/code> and the offset of <code>z<\/code>, there are 16 bytes difference.  And since we&#8217;re doing pointer subtraction, the value of the difference is {byte offset difference} \/ {element size}.  So we have 16 (byte difference) \/ 4 (sizeof(unsigned int)) == 4.<\/p>\n<p>If <code>sizeof(long int)<\/code> was 4, then the struct would probably be laid out like this:<\/p>\n<pre><code>struct test\n{\n    unsigned int x;     \/\/ 4 bytes\n    long int y;         \/\/ 4 bytes\n    unsigned int z;     \/\/ 4 bytes\n};\n<\/code><\/pre>\n<p>In which case the output would be 2.<\/p>\n<p>Note that while the ordering of struct members is defined to be sequential, the layout of the padding is is implementation defined.  Compilers are free to pad as they see fit.<\/p>\n<p>From section 6.7.2.1 of the <a rel=\"nofollow noopener\" target=\"_blank\" href=\"http:\/\/www.open-std.org\/jtc1\/sc22\/wg14\/www\/docs\/n1256.pdf\">C standard<\/a>:<\/p>\n<blockquote>\n<p><em>13<\/em> Within  a  structure  object,  the  non-bit-field  members  and  the  units  in  which  bit-fields reside <strong>have addresses that<br \/>\n  increase in the order in which they are declared<\/strong>.  A pointer to a<br \/>\n  structure  object,  suitably  converted,  points  to  its  initial<br \/>\n  member  (or  if  that  member  is  a bit-field,  then  to  the  unit<br \/>\n  in  which  it  resides),  and  vice  versa.   <strong>There may  be  unnamed<br \/>\n  padding within a structure object, but not at its beginning.<\/strong><\/p>\n<p>&#8230;<\/p>\n<p><em>15<\/em>  <strong>There may be unnamed padding at the end of a structure or union.<\/strong><\/p>\n<\/blockquote><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\"><\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved What determines the distance between two structure members? <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] The reason this outputs 4 has to do with the size of each type and struct padding and alignment. On my system, sizeof(unsigned int) is 4, sizeof(long int) is 8, and sizeof(struct test) is 24. So to ensure that the 64-bit field lies on a 64-bit boundary, the structure is physically laid out like &#8230; <a title=\"[Solved] What determines the distance between two structure members?\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-what-determines-the-distance-between-two-structure-members\/\" aria-label=\"More on [Solved] What determines the distance between two structure members?\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[324,458],"class_list":["post-10063","post","type-post","status-publish","format-standard","hentry","category-solved","tag-c","tag-struct"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] What determines the distance between two structure members? - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-what-determines-the-distance-between-two-structure-members\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] What determines the distance between two structure members? - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] The reason this outputs 4 has to do with the size of each type and struct padding and alignment. On my system, sizeof(unsigned int) is 4, sizeof(long int) is 8, and sizeof(struct test) is 24. So to ensure that the 64-bit field lies on a 64-bit boundary, the structure is physically laid out like ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-what-determines-the-distance-between-two-structure-members\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-21T21:21:24+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-what-determines-the-distance-between-two-structure-members\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-what-determines-the-distance-between-two-structure-members\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] What determines the distance between two structure members?\",\"datePublished\":\"2022-09-21T21:21:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-what-determines-the-distance-between-two-structure-members\/\"},\"wordCount\":249,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"c++\",\"struct\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-what-determines-the-distance-between-two-structure-members\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-what-determines-the-distance-between-two-structure-members\/\",\"name\":\"[Solved] What determines the distance between two structure members? - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-09-21T21:21:24+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-what-determines-the-distance-between-two-structure-members\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-what-determines-the-distance-between-two-structure-members\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-what-determines-the-distance-between-two-structure-members\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] What determines the distance between two structure members?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] What determines the distance between two structure members? - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-what-determines-the-distance-between-two-structure-members\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] What determines the distance between two structure members? - JassWeb","og_description":"[ad_1] The reason this outputs 4 has to do with the size of each type and struct padding and alignment. On my system, sizeof(unsigned int) is 4, sizeof(long int) is 8, and sizeof(struct test) is 24. So to ensure that the 64-bit field lies on a 64-bit boundary, the structure is physically laid out like ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-what-determines-the-distance-between-two-structure-members\/","og_site_name":"JassWeb","article_published_time":"2022-09-21T21:21:24+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-what-determines-the-distance-between-two-structure-members\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-what-determines-the-distance-between-two-structure-members\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] What determines the distance between two structure members?","datePublished":"2022-09-21T21:21:24+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-what-determines-the-distance-between-two-structure-members\/"},"wordCount":249,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["c++","struct"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-what-determines-the-distance-between-two-structure-members\/","url":"https:\/\/jassweb.com\/solved\/solved-what-determines-the-distance-between-two-structure-members\/","name":"[Solved] What determines the distance between two structure members? - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-09-21T21:21:24+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-what-determines-the-distance-between-two-structure-members\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-what-determines-the-distance-between-two-structure-members\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-what-determines-the-distance-between-two-structure-members\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] What determines the distance between two structure members?"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/10063","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=10063"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/10063\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=10063"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=10063"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=10063"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}