标签: c logic compiler-optimization
如果C编译器从左到右工作,那么为什么以下代码的输出就像从右到左执行一样?
int x = 15 ; printf("%d %d %d", x!=15, x=20, x<30);
输出: 1 20 1
答案 0 :(得分:2)
首先,这些是表达式而不是语句。
第二,参数评估的顺序为未指定。您无法确定参数将按什么顺序求值,而您的代码将导致undefined behavior。
有关评估顺序和测序的更多信息,请参见例如this reference。