#include<stdio.h>
int main(void) {
int i=(1,2,3,4);
printf("%d",i);
return 0;
}
私はオンラインの技術的模擬テストを受けたとき、私はこの質問に来ました。まず、int i=(1,2,3,4);
という行にコンパイルエラーがあると思いますが、間違っていました。私はなぜこの質問の出力が4
であるのかわかりません。なぜこのプログラムの出力は4ですか?
#include<stdio.h>
int main(void) {
int i=(1,2,3,4);
printf("%d",i);
return 0;
}
私はオンラインの技術的模擬テストを受けたとき、私はこの質問に来ました。まず、int i=(1,2,3,4);
という行にコンパイルエラーがあると思いますが、間違っていました。私はなぜこの質問の出力が4
であるのかわかりません。なぜこのプログラムの出力は4ですか?
ここで、(1,2,3,4);
は、最後の式に評価されるcommas
で区切られた一連の式です。
C11§6.5.17コンマ演算子:
コンマ演算子の左のオペランドはボイド 式として評価されています。その評価と右オペランドの との間にシーケンスポイントがあります。次に、右側のオペランドが評価されます。結果は の型と値を持ちます。
()は=よりも優先度が高く、()の結果は最後の要素であり、例では4です。以上=操作が行われます
明確な説明。とにかくGCCはこの 'カンマ式の左辺オペランドには何の効果もありません。 – Michi