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