關係運算子:<><=>=

語法

expression < expression
expression > expression
expression <= expression
expression >= expression

備註

二元關係運算子決定下列關聯性:

  • 小於 (<)

  • 大於 (>)

  • 小於或等於 (<=)

  • 大於或等於 (>=)

關係運算子具有由左到右的順序關聯性。 關係運算子的兩個運算元都必須是算術或指標類型。 這些會產生類型 bool 的值。 如果運算式中的關聯性是 false,傳回的值會是 false (0);否則,傳回的值會是 true (1)。

範例

// expre_Relational_Operators.cpp
// compile with: /EHsc
#include <iostream>

using namespace std;

int main() {
   cout  << "The true expression 3 > 2 yields: "
         << (3 > 2) << endl
         << "The false expression 20 < 10 yields: "
         << (20 < 10) << endl;
}

上述範例中的運算式必須以括號括住,因為資料流插入運算子 (<<) 的優先順序高於關係運算子。 因此,不加括弧的第一個運算式會評估為:

(cout << "The true expression 3 > 2 yields: " << 3) < (2 << "\n");

算術轉換中的標準轉換適用於算術類型的運算元。

比較指標

比較相同類型的兩個物件指標時,結果是取決於程式的位址空間中所指向的物件位置。 指標也可以與判斷值為 0 的常數運算式或類型 void * 的指標進行比較。 如果是對 void * 類型的指標進行指標比較,則另一個指標會先隱含轉換成 void * 類型。 然後才進行比較。

兩個不同類型的指標無法進行比較,除非:

  • 其中一個類型是衍生自另一個類型的類別類型。

  • 至少有一個指標已明確轉換 (轉型) 為類型 void *。 (另一個指標會隱含轉換成 void * 類型以便進行轉換。)

相同類型且指向相同物件之兩個指標的比較結果一定為相等。 如果將物件的兩個非靜態成員指標相互比較,則適用下列規則:

  • 如果類別類型不是 union,而且未以 access-specifier (例如 publicprotectedprivate) 分隔兩個成員,則最後宣告的成員指標比較結果會大於之前宣告的成員指標。

  • 如果以 access-specifier 分隔兩個成員,則結果會是未定義。

  • 如果類別類型是 union,則該 union 中不同資料成員的指標比較結果為相等。

如果兩個指標指向相同陣列的元素,或指向超出陣列結尾的元素一,則具有較高註標的物件指標比較結果會較高。 只有在指標參考相同陣列中的物件或超出陣列結尾的位置一時,才能保證指標比較有效。

另請參閱

具有二元運算子的運算式
C++ 內建運算子、優先順序和順序關聯性
C 關係和等號比較運算子