書名: C程序設計語言作者名: 魏東平 朱連章 于廣斌編著本章字數: 776字更新時間: 2018-12-29 14:37:44
4.1.1 關系運算符
關系運算符用于比較兩個數據的大小,共有如下6種運算符。
① < :小于。
② <=:小于等于,對應的數學符號是“≤”。
③ > :大于。
④ >=:大于等于,對應的數學符號是“≥”。
⑤==:等于,由連續兩個等號組成。
⑥ !=:不等于,對應的數學符號是“≠”。
要注意它們的優先級。前4種關系運算符的優先級相同,后兩種也相同,前4種高于后兩種。所有的關系運算符的優先級都低于算術運算符,而高于賦值運算符和逗號運算符。
例如:
① c>a+b等價于c>(a+b)
② a==b<c等價于a==(b<c)
③ a=b<=c等價于a=(b<=c)
使用關系運算符,需要注意以下幾點。
① 關系運算符是雙目運算符,其兩邊的操作數可以是整型、實型、字符型、指針型及枚舉型等。如果參與運算的兩個數類型不一致,則先要進行類型轉換,再進行關系運算。
例如,'x'>'c' 是兩個字符型常量進行比較,實際上比較的是這兩個字符型常量的ASCII碼值。又如,'a'>70的運算順序是先將字符 'a' 轉換成其ASCII碼值97,再與整型常量70進行比較。
② 關系運算符具有左結合性,可以在一個關系表達式中連續使用。例如,關系表達式-1<=x<=1的運算順序是先判斷-1<=x是否成立,結果為0或1,然后再用0或1去判是否小于等于1,結果永遠是1。但是,我們知道關系運算的結果是個邏輯值,或為“真”或為“假”,讓它去跟一個整型、實型數據去比較大小,并沒有實際意義,所以一般不要連續使用關系運算符組成表達式,有的系統甚至把連續出現的關系運算符看做“錯誤”。
③ 必須注意區別“=”和“==”。前者是賦值運算符,后者是關系運算符中的等于運算符。例如,對于下面的程序:
1 #include<stdio.h> 2 void main() 3 { int a=5,b=3,c; 4 printf("c=%d\n",c==a); 5 printf("a=b?%d\n",a=b); 6 }
程序的運行結果為:
c=0
a=b?3 (1表示二者相等,0表示不等)
結果顯然是錯誤的。這是因為,第4行中,錯把“c=a”寫成了“c==a”,多寫了一個“=”,賦值運算變成了關系運算(程序中變量c未做初始化,編譯時顯示有“警告”錯誤);而在第5行中,錯把“a==b”寫成了“a=b”,遺漏了一個“=”,關系運算變成了賦值運算。