问答详情
源自:3-10 运算符大比拼之优先级比较

我用的x++输出不应该是0 嘛,为什么是1?

#include <stdio.h>

int main()

{

    int x = 0;

    printf("x=%d\nx=%d",x++,++x);

    return 0;

}

运行结果是:x = 1

                    x = 2


提问者:萌新程序狗 2019-02-23 20:19

个回答

  • 秋海棠yo
    2019-03-25 16:56:41

    本来printf函数就有从右至左计算的功能(先计算再打印),so,第一次从右至左运算一遍:++x为1(x此时真正的值也为1),然后就是x++为1(x此时真正的值为2)。然后就是从左至右打印了,x++还是x++(原来的值不变),打印出来的这个式子的值还是1,而到了++x就不一样了,它可以把它真正的值打印出来。希望我的回答您能看懂ahahahah>.<

  • qq_慕UI6597111
    2019-03-06 21:21:00

    x=x++,x首先赋值0,自增加一后再赋值给前面的x,所以x=1;x=++x,自增一再赋值后得x=2,前后x相等,结果x=2。

  • 谢小维成
    2019-02-23 22:55:06

    从右到左算的