Share via


C 關係和等號比較運算子

二元關係運算子和相等運算子會比較其第一個運算元與第二個運算元,以測試指定的關聯性是否有效。 如果測試的關聯性為 true,則關聯運算式的結果為 1,如果為 false,則為 0。 結果的類型是 int

語法

relational-expression:
shift-expression
relational-expression < shift-expression
relational-expression > shift-expression
relational-expression <= shift-expression
relational-expression >= shift-expression

equality-expression:
relational-expression
equality-expression == relational-expression
equality-expression != relational-expression

關係運算式和相等運算子會測試下列關聯性:

運算子 測試的關聯性
< 第一個運算元小於第二個運算元
> 第一個運算元大於第二個運算元
<= 第一個運算元小於或等於第二個運算元
>= 第一個運算元大於或等於第二個運算元
== 第一個運算元等於第二個運算元
!= 第一個運算元不等於第二個運算元

清單中的前四個運算子優先順序高於相等運算子 (==!=) 。 請參閱表 C 運算子的優先順序和關聯性中的優先順序資訊。

運算元的類型可能是整數類型、浮點類型或指標類型。 運算元的類型可以不同。 關係運算子會對整數和浮點類型運算元執行一般算術轉換。 此外,您可以使用下列運算元類型組合搭配關係運算子和相等運算子:

  • 任何關係運算子或相等運算子的運算元都可以是相同類型的指標。 針對相等運算子 (==) 和不等運算子 (!=),比較結果會指出兩種指標是否定址相同的記憶體位置。 對於其他關係運算子 (<><=>=) ,比較的結果會指出所指向物件兩個記憶體位址的相對位置。 關係運算子只會比較位移。

    指標比較的定義僅適用於同一物件的部分。 如果指標參考陣列的成員,比較就相當於對應註標的比較。 第一個陣列元素的位址「小於」最後一個元素的位址。 對於結構,稍後宣告之結構成員的指標是結構稍早宣告之成員的「大於」指標。 相等位的成員指標是相等的。

  • 指標值可以與常數值 0 進行相等比較 (==) 或不等比較 (!=)。 值為 0 的指標稱為 「null」 指標;也就是說,它不會指向有效的記憶體位置。

  • 等號比較運算子遵循與關係運算子相同的規則,但允許更多可能性:指標可以與值為 0 的常數整數運算式比較,或指向 的 void 指標。 如果兩個指標都是 Null 指標,則比較結果為相等。 相等運算子會比較區段和位移二者。

範例

這些範例說明關聯式和相等運算子。

int x = 0, y = 0;
if ( x < y )

因為 xy 相等,因此這個範例中的運算式產生的值會是 0。

char array[10];
char *p;

for ( p = array; p < &array[10]; p++ )
    *p = '\0';

這個範例中的片段會將 array 的每個元素設為 Null 字元常數。

enum color { red, white, green } col;
   .
   .
   .
   if ( col == red )
   .
   .
   .

這些陳述式會宣告名為 col 且有 color 標記的列舉變數。 變數可以隨時包含 0、1 或 2 的整數值,分別代表列舉集 color 的其中一個專案:色彩 redwhitegreen 。 如果在 col 執行 語句時 if 包含 0,則會根據 執行 的任何語句 if

另請參閱

關係運算子: <><= 、 和 >=
等號比較運算子: ==!=