1

重複の可能性:
これらの未定義の動作を誰かが説明できますか(i = i ++ + ++ i、i = i ++など…)

#include< stdio.h >

int main()
{
    int i = 1;
    int x = ++i * ++i * ++i;
    printf("%d\n", x);
    printf("%d\n\n",i);

    return 0;
}

1の出力を取得しています!! およびgccで4。私はubuntulinuxを使用しています

4

2 に答える 2

2

未定義動作これは次のとおりです。

int x = ++i * ++i * ++i;

しないでください!!!!

于 2011-06-07T09:55:09.477 に答える
2

iシーケンスポイント間で複数回変更されるため、コードの動作は未定義です。

int x = ++i * ++i * ++i;

FAQを参照してください(セクション3全体を読むことをお勧めします)。

于 2011-06-07T09:55:52.967 に答える