關係運算子及其優先順序,C語言關係運算子及其優先順序詳解

2020-07-16 10:04:19
C 語言提供的關係運算子有: >(大於)、>=(大於等於)、<(小於)、<=(小於等於)、==(等於)和 !=(不等於)6 種二元關係運算子。

在以上 6 種關係運算子中,前 4 個的優先順序高於最後兩個。

由關係運算子組成的式子為關係表示式,如 a>b 即為關係表示式,在 C 語言中,同邏輯表示式一樣,關係表示式的值也為邏輯值,即布林型(bool),取值為真或假。

算術、邏輯、關係、賦值運算子的優先順序順序為:

邏輯非 !>算術>關係>邏輯與&&、邏輯或||>賦值=

例如:
int a=3,b=5;
則有:
  • a>b:邏輯假,其值為 0;
  • a>=b:邏輯假,其值為 0;
  • a<b:邏輯真,其值為 1;
  • a<=b:邏輯真,其值為 1;
  • a==b:邏輯假,其值為 0;
  • a!=b:邏輯真,其值為 1;

【例 1】分析以下程式,輸出其執行結果。
#include<stdio.h>
int main (void)
{
    int a=0,b=1,c;
    c=a>=b||b++>1;
    printf("a=%d,b=%d,c=%dn",a,b,c);
    return 0;
}
程式碼分析:
根據運算子的優先順序,表示式 a>=b||b++>1 等價於 (a>=b)||(b++>1)。a>=b 為假,其值為 0,邏輯或 || 不會發生“短路”。

接著計算邏輯或 || 的右運算元 b++>1,由於是字尾加 1,故先取 b 的原值 1 與 1 比較大小,由於 1>1 為假,故邏輯或 || 的右運算元也為假,假 || 假 = 假,故 c 的值為 0。執行了一次 b++ 運算,故 b 的自身值增了 1,變為 2。

執行結果為:
a=0,b=2, c=0