(++a)+=(a++)怎么计算啊?

来源:百度知道 编辑:UC知道 时间:2024/05/07 22:45:37
int a=4;
cout<<(++a)+=(a++)<<endl; //结果为10
cout<<a<<endl; //结果为11

帮忙分析下啊,谢谢了。

lz你好,为什么结果是10和11楼上的几位都说的很清楚了。
我想说下,cout<<(++a)+=(a++)<<endl; 这个语句本身就通不过编译的。
因为用cout输出赋值语句的时候,一定要用括号括起来的!!

第一个cout中,运行了:a=a+1;
a=a+a;
第二个cout中,运行了:a=a+1;
a=a+a+1;
++a:在使用a之前给a加1;
a++:再a使用(参与运算)后再加1;
cout<<((++a)+=(a++))<<endl;
cout<<a<<endl;

运算顺序为++a,得结果5
a+=a;
得结果10
a++;
得结果11

一个比较好懂的区分++a和a++的办法就是++在前就先++了再得结果,比如这里,就先按++了以后的算,如果a++就先算a,完了再++

原来的代码等效于下面的代码...

int a=4; //a == 4
++a; //a == 5
a+=a; //a == 10
cout << a << endl;
a++; //a == 11
cout << a << endl;

所以输出10和11.

(++a)+=(a++) = (a=a+1)=(a=a+1)+(a=a+1)

//++a 在"这里"和 a++是相等的,