[英]Expression evaluation in C
#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 词法标记器是贪婪的,因此您的表达式被标记为
x -- - y
在应用优先规则之前。
规则是“在获取下一个令牌时,使用可能构成有效令牌的最长字符序列”。 所以---
是--
后跟-
而不是相反。 优先级实际上与此无关。
x--
比--x
强,所以它是这样编译的。 后缀比前缀强。
请参阅C 运算符优先级表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.