-5

次のコードがあるとしましょう:

if (a&&b)
{
...
}

最初の質問は、この状況で短絡評価を使用することを決定したのは誰ですか? コンパイラまたはC標準?

2 番目の質問です。最初に評価されるのはどれですか。aまたはb。シーケンスは誰によって決定されますか?コード内のシーケンスを変更する方法はありますか?

4

1 に答える 1

7
  1. 規格では短絡評価が必要です。

  2. それは常にa最初です。プログラムでそれを変更することはできません。

参照: 6.5.13 論理 AND 演算子、段落 4:

&ビットごとの二項演算子とは異なり、&&演算子は左から右への評価を保証します。2 番目のオペランドが評価される場合、1 番目と 2 番目のオペランドの評価の間にシーケンス ポイントがあります。最初のオペランドが 0 と等しい場合、2 番目のオペランドは評価されません。

于 2013-07-22T21:43:26.967 に答える