关于y=(++i)+(++i)+(++i)的问题

#include<iostream>

创新互联公司是网站建设专家,致力于互联网品牌建设与网络营销,专业领域包括成都网站设计、成都做网站、电商网站制作开发、微信小程序开发、微信营销、系统平台开发,与其他网站设计及系统开发公司不同,我们的整合解决方案结合了恒基网络品牌建设经验和互联网整合营销的理念,并将策略和执行紧密结合,且不断评估并优化我们的方案,为客户提供全方位的互联网品牌整合方案!

using namespace std;

 

int main()

{

int i=2,y;

y=(++i)+(++i)+(++i);

return 1;

}

 

此程序运行完毕之后,y的值是13.

但是粗略一看应该是12才对啊!

但是这是一个很有趣的问题:

它与表达式求值密切关系,

表达式求值,C++里面是从左到右的求值方式,而+法运算又是左结合的

这样, 你可以认为是 y = ((++x)+(++x)) + (++x);
于是,做最优先的加法之前,先要把两个操作数计算出来,
于是首先计算左操作数    ((++x)+(++x)) ,这个又是一个子表达式

先计算子表达式的左操作数=(++x) = 3 

再计算子表达式的右操作数=(++x)=4

左操作数计算出来 = 4+4 = 8

然后,再计算最优先的加法的右操作数 =  ++x = 5

最后,y= 8 + 5 = 13

分享名称:关于y=(++i)+(++i)+(++i)的问题
URL链接:https://www.cdcxhl.com/article42/ieecec.html

成都网站建设公司_创新互联,为您提供品牌网站制作自适应网站ChatGPT建站公司全网营销推广品牌网站设计

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站网页设计