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)。