#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。 Than =將完成操作
清除說明。無論如何,GCC會給你一個關於這個「逗號表達式的左側操作數沒有任何作用」的警告 – Michi