以下のコードで、私は「はい」と回答しています。しかし答えはノーです。これは、私が& &の操作の後で増分していることを意味します。 if()が評価されると、式全体が一度インクリメントされることを期待していました。ポストインクリメントに関連するルールは何ですか?それはあなたが「いいえ」を持っていることを論理的ですので、それは左から右にコンパイルifステートメントの式内のポストインクリメント
int main()
{
int i = 1;
if (i++ && (i == 1))
printf("Yes\n");
else
printf("No\n");
}
'&&'の場合、左側が完全に評価され、 'i'がインクリメントされます。あなたが尋ねるはずの '++'ではなく、 '&&'です。 – Cornstalks
これは、すべての論理演算子のケースか、それともほんの少数ですか? – Rajesh
[短絡動作]のために、 '&&'と '||'の場合があります(https://stackoverflow.com/questions/628526/is-short-circuiting-logical-operators-mandated-and-評価オーダー)。これらの演算子の両方は、常に左側の引数を完全に評価します。その評価の結果に応じて、右の議論を継続し、評価するかもしれません(あるいはそうでないかもしれません)。 – Cornstalks