2017-10-13 10 views
0
#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ですか?

答えて

2

ここで、(1,2,3,4);は、最後の式に評価されるcommasで区切られた一連の式です。

C11§6.5.17コンマ演算子:

コンマ演算子の左のオペランドはボイド 式として評価されています。その評価と右オペランドの との間にシーケンスポイントがあります。次に、右側のオペランドが評価されます。結果は の型と値を持ちます。

1

()は=よりも優先度が高く、()の結果は最後の要素であり、例では4です。以上=操作が行われます

+0

明確な説明。とにかくGCCはこの 'カンマ式の左辺オペランドには何の効果もありません。 – Michi

関連する問題