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