-3

これらのプリインクリメント演算子を解釈する方法は?
プレインクリメント演算子は右から左への結合性を持っているため、最も右側iがインクリメントされるか、すべてがi一度インクリメントされますか?

main()
 {
    int i=3,j;
    j=++i*++i*++i;
    printf("%d",j);
 }

答えは216です。

4

3 に答える 3

0

c11標準によると、§6.5 par。ワーキング ドラフトの 2では、これらのような式は実際には定義されていません。

于 2013-08-13T12:49:06.247 に答える
-1

++i は、操作の前に i をインクリメントします。

あなたのコードは次と同等です:

int i=3,j;
j=(i+1)*(i+2)*(i+3);
i++;i++;i++;
printf("%d",j);

これは4*5*6=120を出力します

于 2013-08-13T12:49:13.753 に答える
-1

答えは150

(++i * ++i) * ++i と等しいか、最初の ++i は i をインクリメント (i=4)、2 番目の ++i は i をインクリメント (i=5) しますが、同じ i なので 5* 5 = 25。最終的に 25 * ++i = 150

于 2013-08-13T12:54:03.113 に答える