遥控玩具机器人:大家知道这道C程序的答案吗??

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 12:47:24
不要编译看看能不能做出这道题:
#include<iostream.h>
int main()
{
int a=2,b=2;
a=(++a)+(++a)+(++a);
cout<<"a的结果是:"<<a;
b=(b++)+(b++)+(b++);
cout<<"b的结果是:"<<b;
return 0;
}
为什么答案会是这样??
但编译出来的答案是:
a=13 b=9
为什么????

这个是C++程序。++a和a++的区别的++a是先a加1再执行其它运算,a++是先用a计算表达式值,再a加1。另外不同的编译器计算表达式值时的顺序是不一样的,有从左到右计算的,也有从右到左计算的。我试了一下,用VC结果a是15,用Dev-C++结果a是13,gcc我还没有试。这种题是没什么意义的,写程序要讲求可读性,这种表达式应慎用。

这个这么简单的哦
我以前也不会的多看看书就知道了
我至少看了15次才看懂了

这个是C吗 C++吧

++前置,后算
++后置,先算

++a=3,++a=4,++a=5
最后一次a=5,所以a=5+5+5=15

b++=2
b++=3
b++=4
因为++后置,所以b=2+3+4=9而不是4+4+4

lihai

没答案……++连续出现的次数超过了三次,在不同的编译器上有不同的结果,有些机器会输出b=10,有些会输出b=12
你可以自己在BCB和VC还有gcc的编译器下分别试试。