【发布时间】:2019-02-02 20:35:11
【问题描述】:
如果 C 编译器从左到右工作,那么为什么以下代码的输出就像是从右到左执行一样?
int x = 15 ;
printf("%d %d %d", x!=15, x=20, x<30);
输出: 1 20 1
【问题讨论】:
-
不,订单未指定。你正在做的是未定义的行为。
-
只是为了消除任何潜在的混淆 - 它们可能在您的系统上按特定顺序执行,但它们可能在另一台计算机上或使用另一个编译器以任何其他顺序执行。
-
"如果 C 编译器从左到右工作,那么为什么...?"这就像在说“如果钱是免费的,那为什么当我去银行要一些他们没有给我的时候?” :-)
标签: c logic compiler-optimization