跳转到内容

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

华夏公益教科书