天天看點

C語言 關系運算符與關系表達式

知識更新檔01:關系運算符及其優先次序

少俠,接招吧!

[接招看題025-01] 說明關系運算符的優先級低于算術運算符,但高于指派運算符。并比較關系運算符的優先級。

C語言 關系運算符與關系表達式

幫你節約時間的源代碼:

main()
{
    int result=0;
    result=0!=1>0;
    printf("0!=1>0 is equal:%d\n",result);
    result=0<(1>=0);
    printf("0<(1>=0) is equal:%d\n",result);
    result=4+8/4==7-1;
    printf("4+8/4==7-1 is equal:%d\n",result);
}      

知識更新檔,内功心法:

1. C語言提供6種關系運算符:
<(小于),
<=(小于或等于),
>(大于), 
>=(大于或等于),     **前4個優先級相同**且前4個高于後2個
==(等于),          **後2個優先級也相同**
!=(不等于)
注意:在C語言中,"等于"關系運算符是雙等号"= =",而不是單等号"= "(指派運算符)。
2.優先級
   (1)在關系運算符中,前4個優先級相同,後2個也相同,且前4個高于後2個。
   (2)與其它種類運算符的優先級關系:
   算術運算符的優先級> 關系運算符的優先級>指派運算符的優先級。      

知識更新檔02:關系表達式

下面的關系表達式都是合法的:

a>b,a+b>c-d,(a=3)<=(b=5),**'a'>='b',(a>b)= =(b>c)**      

關系表達式的值–邏輯值(非"真"即"假")。邏輯值也叫布爾值。

由于C語言沒有邏輯型資料,是以用整數"1"表示"邏輯真",用整數"0"表示"邏輯假"。

例如,假設num1=3,num2=4,num3=5,則:

(1)num1>num2的邏輯關系判斷,邏輯關系為假,用值=0來表示。

(2)(num1>num2)!=num3的邏輯關系判斷,邏輯關系為真,用值=1來表示。

(3)num1<num2<num3的值=1。

思考題:任意改變num1或num2的值,會影響整個表達式的值嗎?為什麼?示範如下:

接招看題025-02:沒改變的結果如下:

C語言 關系運算符與關系表達式

改變之後的結果如下:

C語言 關系運算符與關系表達式

總結程式:之是以會出現0,1的差異,實質上是邏輯關系真假的差異。抓住邏輯關系。

(4)(num1<num2)+num3的值=6,因為num1<num2的值=1,1+5=6。

再次強調:C語言用整數"1"表示"邏輯真",用整數"0"表示"邏輯假"。是以,關系表達式的值,還可以參與其它種類的運算,例如算術運算、邏輯運算等。

[接招看題025-03]說明關系表達式的值關系

C語言 關系運算符與關系表達式
main()
{
    int result=0;
    int num1=3,num2=4,num3=5;
    result=num1>num2;
    printf("num1>num2 is equal:%d\n",result);
    result=(num1>num2)!=num3;
    printf("(num1>num2)!=num3 is equal:%d\n",result);
    result=num1<num2<num3;
    printf("num1<num2<num3 is equal:%d\n",result);
    result=(num1<num2)+num3;
    printf("(num1<num2)+num3 is equal:%d\n",result);
}