未定義の動作とシーケンスポイントに関するこの回答を読んだ後、小さなプログラムを書きました。
#include <stdio.h>
int main(void) {
int i = 5;
i = (i, ++i, 1) + 1;
printf("%d\n", i);
return 0;
}
出力は2
です。ああ、私は減少が来るのを見ませんでした!ここで何が起きてるの?
また、上記のコードをコンパイルしているときに、次の警告が表示されました。
px.c:5:8:警告:コンマ式の左側のオペランドは効果がありません
[-Wunused-value] i = (i, ++i, 1) + 1; ^
どうして?しかし、おそらくそれは私の最初の質問の答えによって自動的に答えられます。
printf("2\n");