我正在使用Dev C ++和TDM-GCC 4.9.2 32位编译器。 我试图在printf函数中找到表达式的评估顺序,我为此编写了程序:
#include<stdio.h>
int main(){
int x=0;
printf("%d %d",x++,++x);
return 0;
}
如果评估顺序是从左到右,则输出将为0 2,从右到左输出将为1 1.但输出结果为1 2.这怎么可能? 如果我写:
printf("%d %d",x++,x);
然后输出为0 1,这表示评估顺序是从右到左,而是如果我写:
printf("%d %d",x,x++);
然后输出为1 0,表示评估顺序是从左到右。请解释一下我为什么会得到矛盾的产出。