繁体   English   中英

C 中的表达式评估

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM