跳轉到內容

C++ 程式設計

來自華夏公益教科書

關係運算符

[編輯 | 編輯原始碼]

運算子 <(小於)、>(大於)、<=(小於或等於)、>=(大於或等於)、==(等於)和 !=(不等於)是關係運算符,用於比較兩個值。變數可以與另一個變數或字面量進行比較。


< 運算子檢查第一個運算元是否小於第二個運算元。如果第一個運算元小於第二個運算元,則返回 true。否則返回 false。

  • 示例
int x =5;
int y = 1;

if (x < 10) //x is 5 which is less than 10, will return true
{
    //...code...
}

if (x < 0) //x is 5 which is not less than 0, will return false
{
    //...code...
}

if (x < y) //x is 5 and y is 1. 5 is not less than 1, will return false
{
    //...code...
}

> 運算子檢查第一個運算元是否大於第二個運算元。如果第一個運算元大於第二個運算元,則返回 true。否則返回 false。

  • 示例
int x =12;
int y = 1;

if (x > 10) //x is 12 which is greater than 10, will return true
{
    //...code...
}

if (x > 15) //x is 12 which is not greater than 15, will return false
{
    //...code...
}

if (x > y) //x is 12 and y is 1. 12 is greater than 1, will return true
{
    //...code...
}

<= 運算子檢查第一個運算元是否小於等於第二個運算元。如果第一個運算元小於或等於第二個運算元,則返回 true。否則返回 false。

  • 示例
int x = 12;
int y = 12;

if (x <= 12) //x is 12 which is less than or equal to 12, will return true
{
    //...code...
}

if (x <= 5) //x is 12 which is not less than or equal to 5, will return false
{
    //...code...
}

if(x <= y) //x is 12 and y is 12. 12 is less than or equal to 12, will return true
{
    //...code...
}

>= 運算子檢查第一個運算元是否大於等於第二個運算元。如果第一個運算元大於或等於第二個運算元,則返回 true。否則返回 false。

  • 示例
int x = 12;
int y = 12;

if (x >= 12) //x is 12 which is greater than or equal to 12, will return true
{
    //...code...
}

if (x >= 19) //x is 12 which is not greater than or equal to 19, will return false
{
    //...code...
}

if (x >= y) //x is 12 and y is 12. 12 is greater than or equal to 12, will return true
{
    //...code...
}

== 運算子檢查第一個運算元是否等於第二個運算元。如果第一個運算元等於第二個運算元,則返回 true。否則返回 false。

  • 示例
int x = 5;
int y = 6;

if (x == 5) //x is 5 which is equal to 5, returns true
{
    //...code...    
}

if (x == 7) //x is 5 which is not equal to 7, returns false
{
    //...code...
}

if (x == y) //x is 5 and y is 6. 5 is not equal to 6, returns false
{
    //...code...
}

!= 運算子檢查第一個運算元是否不等於第二個運算元。如果第一個運算元不等於第二個運算元,則返回 true。否則返回 false。

  • 示例
int x = 5;
int y = 6;

if (x != 5) //x is 5 which is equal to 5, returns false
{
    //...code...
}

if (x != 7) //x is 5 which is not equal to 7, returns true 
{
    //...code...
}

if (x != y) //x is 5 and y is 6. 5 is not equal to 6, returns true
{
    //...code...
}

邏輯運算子

[編輯 | 編輯原始碼]

運算子(也可以寫成 &&)和(也可以寫成 ||)允許將兩個或多個條件連結在一起。該運算子檢查所有條件是否為真,而該運算子檢查是否至少有一個條件為真。這兩個運算子也可以混合在一起,在這種情況下,它們從左到右出現的順序決定了檢查的執行方式。舊版本的 C++ 標準使用關鍵字 &&|| 代替。這兩個運算子都稱為短路。如果前面的條件為假,則不會檢查後面的條件。如果前面的條件為真,則不會檢查後面的條件。

注意
iso646.h 標頭檔案是 C 標準庫的一部分,從 1995 年開始,作為對 C90 標準的修正案。它定義了許多宏,允許程式設計師以文字形式使用 C 語言的按位和邏輯運算子,而沒有該標頭檔案,在某些國際鍵盤和非 QWERTY 鍵盤上無法快速或輕鬆地輸入這些符號。這些符號是 ISO C++ 程式語言中的關鍵字,不需要包含標頭檔案。但是,為了保持一致性,C++98 標準提供了標頭檔案 <ciso646>。在歷史上實現非標準語言擴充套件的 MS Visual Studio 中,這是啟用這些關鍵字(透過宏)的唯一方法,而不會停用擴充套件。

(也可以寫成 !)運算子用於返回一個或多個條件的逆。

  • 語法:
condition1 and condition2
condition1 or condition2
not condition

  • 示例:


當某事不應該為真時。它通常與其他條件結合使用。如果 x>5 但 x 不等於 10,則寫成

if ((x > 5) and not (x == 10)) // if (x greater than 5) and ( not (x equal to 10) ) 
{
  //...code...
}

當所有條件都必須為真時。如果 x 必須介於 10 和 20 之間

if (x > 10 and x < 20) // if x greater than 10 and x less than 20
{
  //....code...
}

當至少一個條件必須為真時。如果 x 必須等於 5 或等於 10 或小於 2

if (x == 5 or x == 10 or x < 2) // if x equal to 5 or x equal to 10 or x less than 2
{
  //...code...
}

當一組條件中至少有一個必須為真時。如果 x 必須介於 10 和 20 之間或介於 30 和 40 之間。

if ((x >= 10 and x <= 20) or (x >= 30 and x <= 40)) // >= -> greater or equal etc...
{
  //...code...
}

當條件更多時,事情會變得更加棘手。訣竅是確保括號放在正確的位置,以建立預期的思考順序。但是,當事情變得如此複雜時,將邏輯拆分為巢狀的 if 語句或將它們放入 bool 變數中通常更容易,但仍然有用的是能夠在複雜的布林邏輯中完成這些操作。

圍繞x > 10和圍繞x < 20是隱含的,因為<運算子優先順序高於。首先x與 10 相比較。如果x大於 10,x與 20 相比較,如果x也小於 20,則執行程式碼。


語句 1 語句 2
T T T
T F F
F T F
F F F

邏輯 AND 運算子 比較左值和右值。如果語句 1語句 2都為真,則表示式返回 TRUE。否則,它返回 FALSE。

if ((var1 > var2) and (var2 > var3))
{
  std::cout << var1 " is bigger than " << var2 << " and " << var3 << std::endl;
}

在此程式碼段中,if 語句檢查var1是否大於var2。然後,它檢查var2是否大於var3。如果是,它會繼續告訴我們var1大於var2var3

注意
邏輯 AND 運算子 有時寫成 &&,這與地址運算子和按位 AND 運算子不同,它們都用 & 表示

語句 1 語句 2
T T T
T F T
F T T
F F F

邏輯 OR 運算子用 表示。與邏輯 AND 運算子一樣,它比較語句 1語句 2。如果語句 1語句 2為真,則表示式為真。如果兩個語句都為真,則表示式也為真。

if ((var1 > var2) or (var1 > var3))
{
  std::cout << var1 " is either bigger than " << var2 << " or " << var3 << std::endl;
}

讓我們用 OR 運算子看一下前面的表示式。如果var1大於var2var3或兩者,則執行if表示式中的語句。否則,程式將繼續執行其餘程式碼。

邏輯 NOT 運算子 在被比較的語句不為真時返回 TRUE。在使用 NOT 運算子以及任何邏輯運算子時要小心。

not x > 10

邏輯表示式的優先順序高於普通運算子。因此,它比較“非 x”是否大於 10。但是,無論“x”是什麼,此語句始終返回 false。這是因為邏輯表示式只返回布林值(1 和 0)。

華夏公益教科書