您好,登錄后才能下訂單哦!
#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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。