为了账号安全,请及时绑定邮箱和手机立即绑定

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

#include <stdio.h>

int main()

{

    int x = 0;

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

    return 0;

}

运行结果是:x = 1

                    x = 2


正在回答

3 回答

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

0 回复 有任何疑惑可以回复我~

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

1 回复 有任何疑惑可以回复我~

从右到左算的

1 回复 有任何疑惑可以回复我~
#1

萌新程序狗 提问者

后面都换成++x,为啥输出都变成了2
2019-02-23 回复 有任何疑惑可以回复我~
#2

萌新程序狗 提问者

而且从右往左算,左边那个不应该是先取值么?
2019-02-23 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信