【c++】【基础】【primer_plus】【第六章】 分支与逻辑运算符
if语句
如果括号里的条件判断语句的值为true
,则执行该分支的代码块,否则不执行该分支的代码块。
1 | if(test) statement; |
1 | if(test) { statement_1; } |
1 | if(test_1) { statement_1; } |
逻辑表达式与关系表达式
所谓逻辑表达式,便是与
、或
、非
三门,用以判断一条语句是真值true
还是假值false
。
所谓关系表达式,便是大于
、等于
、小于
三种,用以判断两变量之间的大小(或其他)关系,其结果也为true
或false
。
逻辑或(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>0
为true
,则返回冒号前面的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 | switch (int_expr) { // 值为整数的表达式 |
1 | switch(gender) { |