C - printf中的意外输出

时间:2017-05-15 12:23:34

标签: c printf

我正在使用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,表示评估顺序是从左到右。请解释一下我为什么会得到矛盾的产出。

0 个答案:

没有答案