【c++】【基础】【primer_plus】【第六章】 分支与逻辑运算符

if语句

如果括号里的条件判断语句的值为true,则执行该分支的代码块,否则不执行该分支的代码块。

1
if(test) statement;
1
2
if(test) { statement_1; }
else { statement_2; }
1
2
3
4
if(test_1) { statement_1; }
else if(test_2) { statement_2; }
else if(test_3) { statement_3; }
else { statement_4; }

逻辑表达式与关系表达式

所谓逻辑表达式,便是三门,用以判断一条语句是真值true还是假值false

所谓关系表达式,便是大于等于小于三种,用以判断两变量之间的大小(或其他)关系,其结果也为truefalse

逻辑或(or)的符号为||。只有在两者都是false的时候结果才为false,即只要有一个为true结果便为true

1
bool res = a > b || a > c;

逻辑与(and)的符号为&&。只有在两者都是true的时候结果才为true,即只要有一个为false结果便为false。 ;'

1
bool res = a > b && a > c;

逻辑非(not)的符号为!~。返回与当前取相反的值,即当前为true则返回false,反之亦然。

1
bool res = !a;

优先级

||&&运算符的优先级低于关系运算符(>=<)。而!运算符则高于关系运算符(>=<)。

同时&&高于||运算符。

其关系运算符与逻辑运算符的优先级如下所示。

1
or < and < 关系(> = <) < not

三目条件运算符

1
int res = a > 0 ? a : 0;

意思是如果a>0true,则返回冒号前面的a,否则返回后面的0

判断字符类型

我们可以使用c++库里的<cctype>头文件来确定字符的类型。

isalpha(ch)判断是否为字母。

isdigit(ch)判断是否为数字。

isspace(ch)判断是否为空格。

ispunct(ch)判断是否为标点。

isupper(ch)判断是否为大写,toupper()转为大写。

islower(ch)判断是否为小写,tolower()转为小写。

isalnum(ch)判断是否为字母或数字。

switch语句

switch语句根据某个值(一般为整型或者枚举)进行枚举,选择执行其中的某个或者某些case。条件分支大于3个以上时推荐使用。每一个case都可以使用break跳过。但是没有break的将继续执行后面的语句。

swich通常在最后有一个default分支,表示前面的所有case都不等于条件值,当然前面没有break跳出的话也有可能会流动到default分支上进行。

1
2
3
4
5
6
switch (int_expr) {                 // 值为整数的表达式
case num_1 : statement_1;
case num_2 : statement_2;
...
default : statement_default;
}
1
2
3
4
5
switch(gender) {
case 0: cout << "boy\n"; break;
case 1: cout << "girl\n"; break;
default: cout << "oh\n"; break;
}