-4

標準 c によると、なぜそれがj= i++ * i++未定義でj=i++ & i++完全に合法的な声明なのですか?

4

3 に答える 3

4

どちらも未定義の動作です。

j = i++ * i++; // undefined behavior
j = i++ & i++; // undefined behavior

object の値はi、2 つの例の 2 つのシーケンス ポイント間で複数回変更されています。

于 2013-10-22T18:07:55.667 に答える
1
j= i++ * i++ ;

j=i++ & i++ ;

シーケンスポイント間で i 値を変更するため、両方とも未定義です

これらの構成要素が未定義の動作である理由をお読みください。

于 2013-10-22T18:08:48.250 に答える
1

Mystical と ouah が既に述べたように、どちらも定義されていません。

j = i++ && i++;

&& ショートカットなので、明確に定義されます。つまり、最初に左のオペランドを評価し、次に左のオペランドが true の場合は右のオペランドを評価する必要があります。

于 2013-10-22T18:11:06.310 に答える