码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-08-22 16:37:08      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:++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)的问题

标签:++i

原文地址:http://battlefire.blog.51cto.com/11961165/1840947

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!