在C++编程的旅途中,经常会遇到需要根据不同条件执行不同代码的情况。这时,分支结构就显得尤为重要。它就像程序中的“决策点”,让程序能够根据输入、状态或其他条件智能地选择执行路径。这时就需要学习关系表达式与逻辑表达式,有了判断之后就可以执行对应的程序。
(一)、关系运算符
在计算机中,有一种数据类型—布尔型(bool),如果一个变量设置为布尔数据类型,那么该变量的数值只能有两种情况,即"真(true)"或"假(false)",计算机中“true”和“false”对应的数值分别为1和0。
布尔数据类型的存在,使得计算机可以进行逻辑判断,这样才能根据不同的情况做出相应的反应。定义bool类型的变量格式如下:
bool 变量名;
例如:语句bool flag;该条语句定义了一个bool类型的变量flag,在数学中"2>1"是正确的,"2<1"是错误的,对应地在C++中"2>1"相当于该逻辑判断的结果为真,"2<1"相当于该逻辑判断的结果是假,其中'>'和'<'这两个运算符被称为"关系运算符"。
在C++中关系运算符是对两个操作数大小进行比较的运算符。计算机一共有6个关系运算符:<(小于),<=(小于等于),>(大于),>=(大于等于),==(等于),!=(不等于)。具体运算举例如下:
关系运算符 |
含义 |
实例 |
运算结果 |
< |
小于 |
10<12 |
1(true) |
<= |
小于等于 |
12<=10 |
0(false) |
> |
大于 |
10>12 |
0(false) |
>= |
大于等于 |
12>=10 |
1(true) |
== |
等于 |
10==12 |
0(false) |
!= |
不等于 |
10!=12 |
1(true) |
用关系运算符连接的表达式称为”关系表达式”,不论多么复杂的关系表达式,其运算结果只有0(false)或1(true)两种情况。此处特别强调,在计算机中逻辑判断相等用的符号是两个等于号,即"==",一个等于号'='是赋值运算符,刚入门者容易将'=='写成'='。
实战训练—写出以下描述对应的关系表达式:
描述 |
关系表达式 |
变量a小于等于b |
a<=b; |
变量a大于b |
a>b; |
变量a是奇数 |
a%2==1 |
变量a能被4整除 |
a%4==0 |
变量a不等于10 |
a!=10 |
(二)、逻辑运算符
在计算机中,当面对很多条件运算时,计算机程序中多个条件往往会用逻辑运算符连接。逻辑运算符包含三种:与(&&)、或(||)、非(!)。
1、"&&"是双目运算符,即用来连接两个表达式,只有当两个表达式的结果都为真时,与运算的结果才为真,运算规则可以简称“全真为真”,"&&"运算的规则如下:
a的取值 |
b的取值 |
a&&b的结果 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
2、"||"是双目运算符,即连接的两个表达式中只要有一个条件成立,结果就为真,运算规则简称为“全假为假”,"||"运算的规则如下:
a的取值 |
b的取值 |
a&&b的结果 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
3、'!'是单目运算符,用来对它后面的表达式结果进行求反,即反转一个表达式的值,它使一个表达式的值从"true"变成了"false",或者从"false"变成了“true”,“真”的非运算的结果为“假”,“假”的非运算的结果为“真”,运算规则简称为“非真即假,非假即真”。'!'运算的规则如下:
a的取值 |
!a的结果 |
0 |
1 |
1 |
0 |
实战训练—写出以下描述对应的关系表达式:
描述 |
关系表达式 |
变量a大于等于3小于等于5 |
a>=3 && a<=5 |
变量a大于3或者a小于-3 |
a>3 || a<-3 |
变量a是偶数 |
!(a%2==1) |
注意:在学习"&&"运算之后,容易犯的一个错误就是在遇到类似"3≦a≦5"的数学式子时,很容易直接写成"3<=a<=5"。我们知道关系运算符的运算结果只有0或1两种情况,那么"3<=a"的运算结果不论是0还是1,必然小于5,这样的释义与数学式子中表达的含义不一致并且也起不到判断的作用,其正确写法为"a>=3 && a<=5"或"3<=a&&a<=5"。