《c primer plus》c语言学习笔记整理(七)-分支与跳转

1.if语句及if else语句
(1)是对if (expression)中的expression的求值进行真假判断,真就执行,其实实际上是1,0,1为真,0为假
(2)if与else之间只能允许一条语句存在(简单语句或者复合语句)
(3)区别:if语句用于选择是否执行一个行为,if else语句用于在两个行为之间选择。
(4)getchar()函数与putchar()函数:
前者打印参数,从输入队列中返回下一个字符,putchar()函数有参数,打印参数,比printf()与scanf()函数更快更简洁
(5)while循环中可以把读取和测试合并为一个表达式,具体可见exam7_1的改写。
(6)注意!=的优先级比=高
(7)ctype.h包含了处理字符函数的原型,分为字符测试函数与字符映射函数,字符测试函数的返回值为真假值(也就是0或者1,以及bool值),其中的字符映射函数不会修改原始参数,只会返回已经修改的值。
2.多重选择else if
(1)c99标注要求编译器至少支持127层嵌套
(2)有多个else和if的时候,else与离他最近的if配对,除非最近的if被花括号括起来。(编译器忽略缩进的)
(3)新增的stdbool.h头文件便可以用bool代替_Bool类型,用True和FALSE分别代替1和0
3.逻辑运算符
(1)逻辑运算符的优先级比关系运算符低
(2)iso64.h头文件包含后,可代替逻辑运算符的书写,比如用and代替&&
(3)!运算符的优先级很高,比乘法运算符还高,与递增运算符的优先级相等,只比圆括号的优先级低
(4)C语言保证逻辑表达式的求值顺序是从左到右的,一旦发现有使整个表达式为假的因素,立即停止求值。
4.条件运算符?
(1)expresson1 ?expresson2 :expresson3 如果expresson1为真(或者0),那么整个表达式的值与2相同,反之,与3相同
5.continue与break语句
(1)三种循环都可以用continue语句,执行到该处时,跳过本次迭代的剩余部分,直接开始下一轮迭代。(如果在循环嵌套内,只会影响包含该语句的内层循环)
(2)continue可以用作占位符(可以不要continue,直接使用一个单独的分号,但是这样可代码的可读性不够好,很难注意到一个单独的分号),例如
while (getchar() != ‘\n’) /* 丢弃一行中其他字符 /
continue; /
跳过输入行的剩余部分,continue作为占符,表示空语句的作用 /
当程序已经读取一行中的某些内容,要跳至下一行开始处时,这种用法很方便。
(3)break语句:终止包含它的循环,并继续执行下一阶段(当用于嵌套循环内时,只影响当前循环)
(4)在for循环中break与continue不同,执行完break语句后会直接执行循环后面的第一条语句,连更新部分也跳过
6.switch与break
(1)如果没有break语句,将会从匹配标签开始执行到switch末尾
(2)不能用变量做case的标签,必须是整型变量或者char类型,同样的switch括号中测试表达式应该是一个整数值(包括char类型)
(3)while (getchar() != ‘\n’) /
丢弃一行中其他字符 */
continue;
这是只读每行的首字符,注意函数的返回值并没有赋值给ch,以上代码所做的只是读取并丢弃字符
(4)如果使用ctype.h系列中的toupper函数可以避免使用多重标签,在进行测试前把字母转换为大写字母
(5)switch通常程序运行会更加快一点,生成的代码少一些。

猜你喜欢

转载自blog.csdn.net/weixin_45096408/article/details/104578061