#include <stdio>
int main(){
int x = 4;
int y = 3;
int z;
z = x---y;
printf("%d" , z);
return 0;
}
Linux Mandriva中的gcc編譯器將其評估爲(x--)-y
。 我很困惑,爲什麼會這樣。 它可能是x - (--y)
。C中的表達式評估
我知道一些答案會告訴我看優先表。我經歷了所有這些,仍然存在疑問。
請有人澄清這一點。
出於好奇,這是一個實現定義的行爲還是標準要求它是貪婪?我可以在不同的平臺/編譯器上依賴這種行爲嗎? – RedX
@RedX:我相當肯定你可以依靠這個。我找不到具體的參考文獻,但這個詞法分析器對C語言的行爲是隱含的:http://www.lysator.liu.se/c/ANSI-C-grammar-l.html –