3.1.3關系運算符
C++提供6種關系運算符,用于數(shù)值之間的比較,表達式的值或為1(表示true),或為0(表示false),參見表3-3。
應該注意:<= 和 >= 運算符不能寫成=< 和 =>,=< 和 =>是無效的運算符。關系運算符的操作數(shù)應當是一個數(shù)值,字符是有效的操作數(shù),因為它們是用數(shù)值來表示的。例如(假定采用ASCII編碼):
'A' < 'F' // 得出 1 (它等價于 65 < 70)
字符串不應當用關系運算符比較,因為被比較的不是字符串的內容本身,而是字符串的地址。例如:
"HELLO" < "BYE"
引起"HELLO"的地址與"BYE"的地址進行比較。由于字符串的地址是由編譯器決定的,所以,表達式的結果或為0,或為1,并不確定。我們以后會看到:可以用C++的庫函數(shù)strcmp,比較兩個字符串。
表3-4 關系運算符
運算符 名字 實例
= = 等于 5 = = 5 // 得出1
! = 不等于 5 != 5 // 得出0
< 小于 5 < 5.5 // 得出1
< = 小于或等于 5 <= 5 // 得出1
> 大于 5 > 5.5 // 得出0
> = 大于或等于 6.3 >= 5 // 得出1
由關系運算符組成的關系表達式的值是邏輯型的,即bool 型。在C++中常常將邏輯真用非0表示(一般為1),邏輯假用0表示。
其中:
'=='用于判斷其前后數(shù)值或表達式的結果a和b是否相等。如a為2001,b為667*3,則表示a等于b 是真的。
'!='用于判斷其前后數(shù)值或表達式的結果a和b是否不相等。如a為2002,b為667*3,則表示a不等于b 是真的。
'<'用于判斷其前后數(shù)值或表達式的結果a是否小于b。如a為2002,b為667*3,則表示a小于b 是假的。
'<='用于判斷其前后數(shù)值或表達式的結果a是否小于或等于b。 如a為2002,b為667*3,則表示a小于或等于b 是假的。
'>'用于判斷其前后數(shù)值或表達式的結果a是否大于b。如a為2002,b為667*3,則表示a大于b 是真的。
'>='用于判斷其前后數(shù)值或表達式的結果a是否大于或等于b。 如a為2002,b為667*3,則表示a大于或等于b 是真的。
關系運算符組成的表達式,一般是和邏輯運算符組合用在條件表達式中的。條件表達式用于程序的分支處理。
注意:
1.關系運算符兩邊的數(shù)值結果必須是類型相同的,否則會容易出現(xiàn)關系判斷的錯誤。如:
char a = '0xa2';
a > '0xa1' 的結果是a 小于'0xa1'。因為 a 是符號整數(shù),而'0xa1'是無符號整數(shù)。給a 賦值后其實是小于0的。
2.字符串不應當用關系運算符比較,因為被比較的不是字符串的內容本身,而是字符串的地址。例如:
"Welcome" < "Beijing"
引起"Welcome"的地址與"Beijing"的地址進行比較。由于字符串的地址是由編譯器決定的,所以,表達式的結果或為假,或為真,并不確定。我們以后會看到:可以用C++的庫函數(shù)strcmp,比較兩個字符串。
C++提供6種關系運算符,用于數(shù)值之間的比較,表達式的值或為1(表示true),或為0(表示false),參見表3-3。
應該注意:<= 和 >= 運算符不能寫成=< 和 =>,=< 和 =>是無效的運算符。關系運算符的操作數(shù)應當是一個數(shù)值,字符是有效的操作數(shù),因為它們是用數(shù)值來表示的。例如(假定采用ASCII編碼):
'A' < 'F' // 得出 1 (它等價于 65 < 70)
字符串不應當用關系運算符比較,因為被比較的不是字符串的內容本身,而是字符串的地址。例如:
"HELLO" < "BYE"
引起"HELLO"的地址與"BYE"的地址進行比較。由于字符串的地址是由編譯器決定的,所以,表達式的結果或為0,或為1,并不確定。我們以后會看到:可以用C++的庫函數(shù)strcmp,比較兩個字符串。
表3-4 關系運算符
運算符 名字 實例
= = 等于 5 = = 5 // 得出1
! = 不等于 5 != 5 // 得出0
< 小于 5 < 5.5 // 得出1
< = 小于或等于 5 <= 5 // 得出1
> 大于 5 > 5.5 // 得出0
> = 大于或等于 6.3 >= 5 // 得出1
由關系運算符組成的關系表達式的值是邏輯型的,即bool 型。在C++中常常將邏輯真用非0表示(一般為1),邏輯假用0表示。
其中:
'=='用于判斷其前后數(shù)值或表達式的結果a和b是否相等。如a為2001,b為667*3,則表示a等于b 是真的。
'!='用于判斷其前后數(shù)值或表達式的結果a和b是否不相等。如a為2002,b為667*3,則表示a不等于b 是真的。
'<'用于判斷其前后數(shù)值或表達式的結果a是否小于b。如a為2002,b為667*3,則表示a小于b 是假的。
'<='用于判斷其前后數(shù)值或表達式的結果a是否小于或等于b。 如a為2002,b為667*3,則表示a小于或等于b 是假的。
'>'用于判斷其前后數(shù)值或表達式的結果a是否大于b。如a為2002,b為667*3,則表示a大于b 是真的。
'>='用于判斷其前后數(shù)值或表達式的結果a是否大于或等于b。 如a為2002,b為667*3,則表示a大于或等于b 是真的。
關系運算符組成的表達式,一般是和邏輯運算符組合用在條件表達式中的。條件表達式用于程序的分支處理。
注意:
1.關系運算符兩邊的數(shù)值結果必須是類型相同的,否則會容易出現(xiàn)關系判斷的錯誤。如:
char a = '0xa2';
a > '0xa1' 的結果是a 小于'0xa1'。因為 a 是符號整數(shù),而'0xa1'是無符號整數(shù)。給a 賦值后其實是小于0的。
2.字符串不應當用關系運算符比較,因為被比較的不是字符串的內容本身,而是字符串的地址。例如:
"Welcome" < "Beijing"
引起"Welcome"的地址與"Beijing"的地址進行比較。由于字符串的地址是由編譯器決定的,所以,表達式的結果或為假,或為真,并不確定。我們以后會看到:可以用C++的庫函數(shù)strcmp,比較兩個字符串。

