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

发布时间:2020-07-07 18:15:55 作者:萌谷王
来源:网络 阅读:737

#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

推荐阅读:
  1. nginx日志文件的配置​
  2. 举例说明C语言中i++和++i的区别是什么?

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

++i

上一篇:table页面的处理

下一篇:关于遇到NLTK下载路径的一个小问题。

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》