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++ 標準使用關鍵字 && 和 || 代替與與或。這兩個運算子都稱為短路。如果前面的與條件為假,則不會檢查後面的條件。如果前面的或條件為真,則不會檢查後面的條件。
該非(也可以寫成 !)運算子用於返回一個或多個條件的逆。
- 語法:
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大於var2和var3。
| 語句 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大於var2或var3或兩者,則執行if表示式中的語句。否則,程式將繼續執行其餘程式碼。
邏輯 NOT 運算子 非 在被比較的語句不為真時返回 TRUE。在使用 NOT 運算子以及任何邏輯運算子時要小心。
not x > 10
邏輯表示式的優先順序高於普通運算子。因此,它比較“非 x”是否大於 10。但是,無論“x”是什麼,此語句始終返回 false。這是因為邏輯表示式只返回布林值(1 和 0)。