二級C++精品課程3-1-2:C++運算符之關系運算符

字號:

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,比較兩個字符串。