#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)
。
我知道一些答案会告诉我查看优先表。我已经完成了所有这些,但仍然存在疑问。
请有人澄清这一点。
答案 0 :(得分:9)
C词法标记器是贪婪的,所以你的表达式被标记为
x -- - y
在应用优先规则之前。
答案 1 :(得分:4)
规则是“获取下一个令牌时,使用可能构成有效令牌的最长字符序列”。因此---
为--
后跟-
,而不是相反。优先权实际上与此毫无关系。
答案 2 :(得分:-1)
x--
强于--x
,所以它是以这种方式编译的。 Postfix强于前缀。