int a=5,b=(++a)+(++a)+(++a)怎么计算? 5

编译出来的结果是最后b=22,a=8如果只计算b=(++a)+(++a),结果是a=7,b=14请问计算的时候每一步详细应该是怎么样的呢?... 编译出来的结果是 最后b=22,a=8 如果只计算b=(++a)+(++a),结果是a=7,b=14 请问计算的时候 每一步详细应该是怎么样的呢? 展开
 我来答
百度网友cd5f8ae
2018-08-02 · TA获得超过271个赞
知道小有建树答主
回答量:144
采纳率:75%
帮助的人:42.1万
展开全部
#include <iostream>
using namespace std;

int main()
{
int a = 5;
int b = (++a) + (++a) + (++a);
int a1 = 5;
int b1 = (++a1) + (++a1);
cout <<"a:"<< a << endl <<"(++a) + (++a) + (++a):" <<b << endl;
cout << "a1:" << a1 << endl <<"(++a1) + (++a1):" << b1 << endl;
    return 0;
}

结果:


在表达式中的“()”优先级高于“+”

所以(++a)+(++a)会优先执行++a两次,此时a为7,而(++a)整体值也为7,然后执行“+”也就是7+7=14

(++a)+(++a)+(++a)执行顺序相同,表达式最终值为8+8+8=24

a是一块空间存储的值,不可能同时又是6又是7又是8,所以也不可能是6+7+8这样的结果

种烧饼的怪叔叔
2018-08-02 · TA获得超过2214个赞
知道小有建树答主
回答量:824
采纳率:65%
帮助的人:450万
展开全部
b=(++a)+(++a)+(++a)这样的写法本事就是有问题,不同的编译器会有不同的结果。简单解释下就是,我们并不知道对a求值的时候a是多少,我们能确保的仅仅是在自增后才对a求值.所以,有可能在对第一个++a求值的时候,已经完成了三次自增。了解更多可百度求值顺序。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小老好人3u
2018-08-02 · TA获得超过138个赞
知道小有建树答主
回答量:170
采纳率:79%
帮助的人:49.3万
展开全部
b=6+7+8=21
a=8
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式