读书人

关于运算符自增的有关问题

发布时间: 2012-03-31 13:13:26 作者: rapoo

关于运算符自增的问题!
#include <stdio.h>

void main()
{
int x,y,z1,z2;
x=20;y=11;
z1=(x++)+(x++);
z2=(++y)+(++y);
printf("%d,%d,%d,%d\n",x,y,z1,z2);
}

运行结果z1=40;
哪位高手帮忙给我讲讲 为什么x经过两次自增相加的结果是40啊?

[解决办法]
z1是40,虽然x经过两次自加,但+号两侧的(x++)返回的都是自加之前的20,所以相加之后是40。
x两次自加之后的值是22,具体细节要看编译器实现吧,实际写代码的时候最好别写这样“模棱两可”的代码。
[解决办法]
x++ 是先引用后增加
所以在同一行里,z1=x+x;
[解决办法]
相当于
x=20
z1=20+20; x++;x++;
关键是后面没有继续用到值变为22的x啊,
[解决办法]

探讨

如果z1=(x++)+(x++)和z1=x+x的结果是一样的 那么x++在这里到底有什么用啊?

[解决办法]
z1=(x++)+(x++)

未定义行为,避免使用
[解决办法]
google 月经贴

读书人网 >C++

热点推荐