C++请问 int a = 1; cout << (++a)+(++a)+(++a) << endl; 为何是10

C++请问inta=1;cout<<(++a)+(++a)+(++a)<<endl;为何是10而inta=1;cout<<(a++)+(++a)+(++a)<<endl;... C++请问 int a = 1; cout << (++a)+(++a)+(++a) << endl; 为何是10

int a = 1;
cout << (a++)+(++a)+(++a) << endl;
为何是7
展开
 我来答
wyh891205
2011-02-08
知道答主
回答量:45
采纳率:0%
帮助的人:25.2万
展开全部
++a是先加1再进行计算,a++是计算完之后加1;
===================================================
特别注意:但是无论是a++,还是++a都是用当前a的值去运算~~
====================================================
第一个:
++a是在每次运算前都会自加一次,所以,一开始,a=1,做第一次加法前,先执行括号1,a先自加,a=2,然后执行括号2,a再自加,a=3,此时执行第一次加法,用当前的a去运算,3+3=6;做第二次加法,先执行括号3,a自加,a=4;再做加法,6+4=10;

第二个:
a++是做完运算之后才加1,所以执行第一次加法,先执行括号2,a自加,a=2,然后做第一次加法,2+2=4,接着做第二次加法,先执行括号3,a再自加,a=3,然后执行第二次加法,4+3=7;执行完毕后才执行括号1,a自加,a=4;但是a=4这个值是运算完之后才加的,所以结果是7,不是8

你可以试着敲以下代码验证:
#include <iostream>
using namespace std;

void main()
{
int a=1;
cout<<"情况1:第一次加完"<<(++a)+(++a)<<endl;
a=1;
cout<<"情况2:第一次加完"<<(a++)+(a++)<<endl;
a=1;
cout<<(++a)+(++a)+(++a)<<endl;
cout<<"情况1:加完后a:"<<a<<endl;
a=1;
cout<<(a++)+(++a)+(++a)<<endl;
cout<<"情况2:加完后a:"<<a<<endl;
system("pause");
}

希望对你有帮助
匿名用户
2011-02-08
展开全部
什么意思?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
牛松5
2011-02-08 · TA获得超过208个赞
知道答主
回答量:82
采纳率:0%
帮助的人:84万
展开全部
怎么感觉第一个答案是9,第二个答案是8?你运行过?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dreamru
2011-02-08 · TA获得超过290个赞
知道小有建树答主
回答量:488
采纳率:0%
帮助的人:251万
展开全部
这个没标准的,不同的编译器会有不同的结果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式