(第四篇)
目录
(第四篇)
2.分支与循环
2.1if语句
2.2关系操作符编辑
2.3条件操作符
2.4.逻辑操作符
2.5switch语句
2.分支与循环
2.1if语句
2.1.1else语句
2.1.2多条语句
(a)如图,虽然printf("庆祝一下“)似乎在为满足条件的if语句下,但是由于if语句只控制一条语句,所以它被当作正常代码执行;
(b)所以一般将if语句想包含的内容使用{}括起来(else,else if)同理;
(c)具体来说,if语句默认只控制紧随其后的一条语句。无论条件是否成立,if后面的第一条语句都会受到条件控制,而第二条及之后的语句则与if无关,无论条件真假都会照常执行。这就是为什么上图中printf("庆祝一下")虽然看起来缩进在if下面,却仍然会被当作普通代码执行的原因。
(d)如果希望if条件成立时执行多条语句,就必须使用花括号{}将这些语句包裹起来,形成一个语句块。例如:
#include <stdio.h> int main() { int score = 85; if (score >= 60) { printf("恭喜你,及格了!\n"); printf("继续加油,争取更高分!\n"); printf("你的成绩是:%d\n", score); } return 0; }(e)在上面的代码中,由于使用了花括号{},当score大于等于60时,三条printf语句都会被执行。如果不加花括号,则只有第一条printf语句受if控制,后面两条printf语句无论条件是否成立都会执行,这往往不是我们想要的结果。
(f)因此,在编写if语句(以及else、else if)时,建议始终使用花括号{}明确包裹需要控制的语句范围,即使只有一条语句也建议加上,这样既能避免逻辑错误,也能让代码的可读性更好。
2.1.3多分支
2.1.4嵌套if语句
(a)理解:相当于在一个if里面嵌套一个if,发现满足进入外层if的条件后可以直接将其忽略,直接执行内层if;
2.1.5悬空else
(a)不要以为同位置缩进了就是一起的;
2.2关系操作符![]()
(a)多个关系操作符不宜连用;
(1)如图,在此图中,if()内的判断语句遵循从左到右判断的顺序,由于C语言判断为真则返回1,所以i<j传变为1,1<3成立,所以if判断为真,语句执行;
(2)如果实在想要连用,可以将想执行的语句分开并用&&连接,比如:if(i<j<k)改为:if(i<j&&j<k);
2.3条件操作符
例如:
(a)逻辑为:进入printf()后,%s占位,填充的数进行条件操作符判断:先判断第一个条件,如果成立,则结束判断,将后面的值填入%s;如果不成立,则继续判断;当判断全不成立时,直接执行最后语段;
2.4.逻辑操作符
2.4.1取反符:!
2.4.2 逻辑与:&&
2.4.3 逻辑或:||
2.4.4 练习1
(a)分析:此案例中,使用()将不同语句链接:进入if()语句时,先判断前段语句是否成立,即先判断年份是否为非100整年且能被4整除,后进行400整除的判断;
2.4.5短路
(a)仅需记住:
(1)对于&&,从左往右,只要判断为假,后面的语句均不执行;
(2)对于||,从左往右,只要判断为真,后面的语句不再执行;如果判断为假,仍可继续进行;
2.5switch语句
2.5.1switch语句与if语句的对比
(a)如果switch语句的case分支不加break结束switch,则程序会继续执行该case后面的语句;
2.5.2switch语句的default