c语言程序设计现代方法笔记--第五章 选择语句

49 阅读2分钟

5.1 逻辑表达式

5.1.1 关系运算符

关系运算符的优先级低于算术运算符。

例如,表达式i + j < k - 1意思是(i + j)<(k -1)。关系运算符都是左结合的。

5.1.2 判等运算符

判等运算符的优先级低于关系运算符。

例如,表达式i < j == j < k等价于表达式(i < j) == (j < k)。

5.1.3 逻辑运算符

运算符!的优先级和一元正负号的优先级相同;

运算符&&和运算符||的优先级低于关系运算符和判等运算符。

5.2 if语句

5.2.2 else子句

if(){}

else if(){}

5.2.7 C99中的布尔值

C99提供了_Bool型,_Bool是整数类型(更准确地说是无符号整型),所以_Bool变量实际上就是整型变量;但是和一般的整型不同,_Bool只能赋值为0或1。一般来说,往_Bool变量中存储非零值会导致变量赋值为1。

除了_Bool类型的定义,C99还提供了一个新的头<stdbool.h>,这使得操作布尔值更加容易。该头提供了bool宏,用来代表_Bool。

5.3 switch语句

image.png

  • 控制表达式:switch后边必须跟着由圆括号括起来的整型表达式。C语言把字符当成整数来处理,因此在switch语句中可以对字符进行判定。但是,不能用浮点数和字符串。
  • 分支标号:每个分支的开头都有一个标号,常量表达式很像是普通的表达式,只是不能包含变量和函数调用。因此,5是常量表达式,5 + 10也是常量表达式,但n + 10不是常量表达式(除非n是表示常量的宏)。分支标号中的常量表达式的值必须是整数(字符也可以)。
  • 语句:每个分支标号的后边可以跟任意数量的语句。不需要用花括号把这些语句括起来。(好好享受这一点,这可是C语言中少数几个不需要花括号的地方。)每组语句的最后一条通常是break语句。
  • 注意:C语言不允许有重复的分支标号,但对分支的顺序没有要求,特别是default分支不一定要放置在最后。