評估順序
本章節將告訴您的運算式都會經過評估的順序,但沒有解釋清楚的語法或語意,這些運算式中運算子。 先前的章節提供兩個運算子的每一個完整的參考。
根據優先順序及群組],其運算子的就會評估運算式。 (運算子優先順序和順序關聯性 在 語彙慣例,顯示的關聯性的 C++ 運算子會強制對運算式。) 請考量以下範例:
範例
// expre_pluslang__pluslang_Order_of_Evaluation.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main()
{
int a = 2, b = 4, c = 9;
cout << a + b * c << "\n";
cout << a + (b * c) << "\n";
cout << (a + b) * c << "\n";
}
Output
38
38
54
運算式評估順序
上圖所示的運算式會評估的順序取決於優先順序和順序關聯性的運算子:
乘法 (*) 具有最高優先順序,在此運算式中。 因此子運算式b * c會先評估。
加法 (+) 具有下一個最高的優先順序,所以a的產品會加入b和c。
左的移位 (<<) 具有最低的優先順序,在運算式內,但有兩個項目。 左移運算子群組從左到右,因為左邊的子運算式是先驗算,然後向右移一個。
括號用來群組子運算式,當他們變更優先順序以及運算式會評估的順序,如下圖所示。
運算式評估順序,加上括弧
例如上, 圖中的運算式會評估只提供其副作用 — 在此情況下,將資訊傳送到標準輸出裝置。