2017-10-13 115 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。 Than =將完成操作

+0

清除說明。無論如何,GCC會給你一個關於這個「逗號表達式的左側操作數沒有任何作用」的警告 – Michi