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 ++
後置バージョンでは、優先順位は高くなりますが、ここでwitha++
に戻り、この式の後に の値をインクリメントすることがわかりました。0
&
0x01
a
しかし、私が理解できないのは、なぜプレフィックスバージョンで++a
最初に評価されるのですか? 演算子の優先順位表は、prefix ++
と&
が同じ優先順位を持ち、さらにそれらの結合性が であることを示していright-to-left
ます。これは、最初に評価する必要があることを意味しません&
か?
編集: 私が使用しているチャート: C Operator Precedence Table