我對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 ++
具有更大的優先級,a++
會回到這裏0
到&
與0x01
,並會增加a
在這個表達之後的價值。
但我不明白爲什麼在前綴版本中,爲什麼++a
首先被評估?運營商優先級表指示prefix ++
和&
具有相同的優先級,此外,它們的關聯性爲right-to-left
。這是否意味着&
應該先評估?
編輯: 我使用的圖表:C Operator Precedence Table
您使用的是哪張圖表?那是不正確的'++'比二進制'&'具有更高的優先級,參見[這裏](http://www.swansontec.com/sopc.html)。 –