WTS123456 发表于 2018-3-21 10:46:29

自增问题

#include <stdio.h>

void main()
{
        int j=5,m;

        m = (++j)+(++j)+(++j);
        printf("%d\n",m);
}

这为什么是22呢

BngThea 发表于 2018-3-21 10:58:07

等价于
((++j) + (++j)) + (++j)
先计算左边括号,j完成两次自增变成7,相加得14
然后等价于
14 + (++j)
j先自增变成8,结果为14+8 == 22

WTS123456 发表于 2018-3-21 11:15:37

BngThea 发表于 2018-3-21 10:58
等价于
((++j) + (++j)) + (++j)
先计算左边括号,j完成两次自增变成7,相加得14


还有这种操作

BngThea 发表于 2018-3-21 11:17:34

WTS123456 发表于 2018-3-21 11:15
还有这种操作

不建议写这种代码
可读性极差,在不同环境下结果还可能不一样
页: [1]
查看完整版本: 自增问题