簡體   English   中英

后綴前綴++和二進制&運算符的優先級

[英]Precedence of postfix prefix ++ and binary & operators

我對C中的后綴和前綴運算符優先級感到困惑,任何幫助和提示都會有所幫助。

我將在這里粘貼測試代碼:

#include <stdio.h>

int a = 0;

int main(int argc, char *argv[])
{
   if (++a & 0x01) // prefix version
   // if (a++ & 0x01) // postfix version
   {
      printf("++ first\n");
   }
   else
   {
      printf("& first\n");
   }
   return 0;
}

我現在可以理解,在postfix版本中,盡管postfix ++具有更高的優先級,但a++會在此處將&返回0 &帶有0x01並且會在此表達式之后增加a的值。

但是我不明白的是為什么在前綴版本中為什么要先評估++a 運算符優先級表表明prefix ++&具有相同的優先級,此外,它們的關聯性是right-to-left 這不是說&應該首先被評估嗎?

編輯:我正在使用的圖表: C運算符優先級表

再次檢查優先級表。 我相信你可能會得到混淆的一元地址運算符&和二元按位與運算符&

請參閱: http : //en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Operator_precedence

通過這種解釋,您a在應用按位與之前將a遞增。

對於前綴/后綴:

++ a->(檢索+增量),然后使用該值。

a ++->(檢索),使用值(遞增)

優先順序:通過這種方式:

((++ a)&0x01),(&和++)都使用不同的表達式。

希望它在某種程度上有助於理解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM