-6
i=2;

i= ++i + ++i + ++i;

printf(i)

説明付きで出力してください。
私が得ている答えは12ですが、 13である必要があります。

4

2 に答える 2

5

同じ式内でプリインクリメント演算子を複数回使用することは許可されていないため、コードの動作はC 標準に従って定義されていません。出力は何でもかまいません。

このトピックのより包括的な扱いについては、この質問への回答を参照してください。

于 2013-03-12T11:22:36.490 に答える
-4

動作は未定義ですが、UR CASE IT HAS BEEN EXECUTED AS, CONSIDERING THE PARSING IS FROM left, i = 5 + 4 + 3 = 12

説明のために、 i = (++i) + (++i) + (++i) 今は i = 2 なので、最初に ++i は 3 として展開され、i=3 i = (++i) + ( ++i) + 3

i = 3 なので、++i は 4 に展開され、i=4 i = (++i) + 4 + 3 になります。

今は i = 4 なので、まず ++i は 4 として展開され、i=5 になります i = 5 + 4 + 3

于 2013-03-12T11:48:56.090 に答える