{"id":14509,"date":"2022-10-08T02:28:31","date_gmt":"2022-10-07T20:58:31","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-implications-of-operator-precedence-in-c\/"},"modified":"2022-10-08T02:28:31","modified_gmt":"2022-10-07T20:58:31","slug":"solved-implications-of-operator-precedence-in-c","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-implications-of-operator-precedence-in-c\/","title":{"rendered":"[Solved] Implications of operator precedence in C"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-18947181\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"18947181\" data-parentid=\"18946613\" data-score=\"1\" 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>Although those examples come from a different language, I think they are the same as operator precedence in C. In general, you&#8217;d be better off using a reference for the C language, such as the C standard, or a summary such as the one in <a rel=\"nofollow noopener\" target=\"_blank\" href=\"http:\/\/en.wikipedia.org\/wiki\/Operators_in_C_and_C++#Operator_precedence\">Wikipedia<\/a>.<\/p>\n<p>However, I don&#8217;t believe that is actually what you are asking. Operator precedence has <em>no implications<\/em> for order of evaluation. All operator precedence does is show you how to parenthesize the expression. A C compiler is allowed to evaluate the operations in just about any order it wishes to. It is also allowed to use algebraic identities if it is provable that they will have the same result for all valid inputs (this is not usually the case for floating point calculations, but it is usually true for unsigned integer calculations).<\/p>\n<p>The only cases where the compiler is required to produce code with a specific evaluation order are:<\/p>\n<ol>\n<li>\n<p>Short-circuit boolean operators <code>&amp;&amp;<\/code> and <code>||<\/code>: the left argument must be evaluated first, and in some cases the right argument may not be evaluated;<\/p>\n<\/li>\n<li>\n<p>The so-called ternary operator <code>?:<\/code>: the left argument (before the <code>?<\/code>) must be evaluated first; subsequently, exactly one of the other two operators will be evaluated. Note that this operator <em>groups to the right<\/em>, demonstrating that there is no relationship between grouping and evaluation order. That is, <code>pred_1 ? action_1() : pred_2 ? action_2() : pred_3 ? action_3()<\/code> is the same as <code>pred_1 ? action_1() : (pred_2 ? action_2() : pred_3 ? action_3())<\/code>, but it&#8217;s <code>pred_1<\/code> which must be evaluated first.<\/p>\n<\/li>\n<li>\n<p>The comma operator <code>,<\/code>: the left argument must be evaluated first. <em>This is not the same as the use of the comma in function calls.<\/em><\/p>\n<\/li>\n<li>\n<p>Function arguments must be evaluated before the function is called, although the order of evaluation of the arguments is not specified, and neither is the order of evaluation of the expression which produces the function.<\/p>\n<\/li>\n<\/ol>\n<p>The last phrase refers to examples such as this:<\/p>\n<pre><code>\/\/ This code has Undefined Behaviour. DO NOT USE\ntypedef void(*takes_int_returns_void)(int);\ntakes_int_returns_void fvector[3] = {...}\n\/\/...\n\/\/...\n(*fvector[i++])(i);\n<\/code><\/pre>\n<p>Here, a compiler may choose to increment <code>i<\/code> before or after it evaluates the argument to the function (or other less pleasant possibilities), so you don&#8217;t actually know what value the function will be called with.<\/p>\n<p>In the case of <code>1+2*2*4<\/code>, the compiler must generate code which will produce <code>17<\/code>. How it does that is completely up to the compiler. Furthermore, if all <code>x<\/code>, <code>y<\/code> and <code>z<\/code> are all unsigned integers, a compiler may compile <code>1 + x*y*z<\/code> with any order of multiplications it wants to, even reordering to <code>y*(x*z)<\/code>.<\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">7<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved Implications of operator precedence in C <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] Although those examples come from a different language, I think they are the same as operator precedence in C. In general, you&#8217;d be better off using a reference for the C language, such as the C standard, or a summary such as the one in Wikipedia. However, I don&#8217;t believe that is actually what &#8230; <a title=\"[Solved] Implications of operator precedence in C\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-implications-of-operator-precedence-in-c\/\" aria-label=\"More on [Solved] Implications of operator precedence in C\">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,907],"class_list":["post-14509","post","type-post","status-publish","format-standard","hentry","category-solved","tag-c","tag-operator-precedence"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] Implications of operator precedence in C - 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-implications-of-operator-precedence-in-c\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] Implications of operator precedence in C - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] Although those examples come from a different language, I think they are the same as operator precedence in C. In general, you&#8217;d be better off using a reference for the C language, such as the C standard, or a summary such as the one in Wikipedia. However, I don&#8217;t believe that is actually what ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-implications-of-operator-precedence-in-c\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-07T20:58:31+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=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-implications-of-operator-precedence-in-c\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-implications-of-operator-precedence-in-c\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] Implications of operator precedence in C\",\"datePublished\":\"2022-10-07T20:58:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-implications-of-operator-precedence-in-c\/\"},\"wordCount\":400,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"c++\",\"operator-precedence\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-implications-of-operator-precedence-in-c\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-implications-of-operator-precedence-in-c\/\",\"name\":\"[Solved] Implications of operator precedence in C - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-10-07T20:58:31+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-implications-of-operator-precedence-in-c\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-implications-of-operator-precedence-in-c\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-implications-of-operator-precedence-in-c\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] Implications of operator precedence in C\"}]},{\"@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] Implications of operator precedence in C - 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-implications-of-operator-precedence-in-c\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] Implications of operator precedence in C - JassWeb","og_description":"[ad_1] Although those examples come from a different language, I think they are the same as operator precedence in C. In general, you&#8217;d be better off using a reference for the C language, such as the C standard, or a summary such as the one in Wikipedia. However, I don&#8217;t believe that is actually what ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-implications-of-operator-precedence-in-c\/","og_site_name":"JassWeb","article_published_time":"2022-10-07T20:58:31+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-implications-of-operator-precedence-in-c\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-implications-of-operator-precedence-in-c\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] Implications of operator precedence in C","datePublished":"2022-10-07T20:58:31+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-implications-of-operator-precedence-in-c\/"},"wordCount":400,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["c++","operator-precedence"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-implications-of-operator-precedence-in-c\/","url":"https:\/\/jassweb.com\/solved\/solved-implications-of-operator-precedence-in-c\/","name":"[Solved] Implications of operator precedence in C - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-10-07T20:58:31+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-implications-of-operator-precedence-in-c\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-implications-of-operator-precedence-in-c\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-implications-of-operator-precedence-in-c\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] Implications of operator precedence in C"}]},{"@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\/14509","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=14509"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/14509\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=14509"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=14509"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=14509"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}