#C语言的分支语句
在C语言中的分支语句包括if语句switch语句等,下文,分别介绍if语句和switch语句的易错点。
##关于if语句
- if语句只能控制紧接着的一条语句,控制多条语句需要加{ }。
- else后没有表达式,同样默认控制一条语句,也可加上{ }控制多条语句。
- 嵌套if语句
//判断整数的值
#include<stdio.h>
int main()
{
int num = 0;
scanf("%d" , &num);
if(num == 0)
{
printf("输入的数字是0\n");
}
else *if(num > 0)
{
printf("输入的数字是整数\n");
}
else
{
printf("输入的数字是负数\n");
}*
//斜体代码与前面的else嵌套构成嵌套的if语句
return 0;
}
- else总是和最近的if匹配,“就近原则”
- 判断数值是否相等切记是两个==
- 短路问题
由于C语言逻辑运算符的特点是先对左侧的表达式进行求值再对右侧的表达式求值,这个顺序是一定的
如果左边的表达式满足逻辑运算符的条件,就不再对右侧表达式进行求值。
这种情况就称为“短路”
int main()
{
int i = 0, a = 0, b = 2, c = 3, d = 4;
i = a++ && ++b && d++;
printf("a = %d\n b = %d\n c = %d\n d = %d\n i = %d\n", a, b, c, d, i);
//a++ 后置++ 先使用后++ 先将a = 0的值返回给表达式,0为假 与运算导致整行代码被短路 导致++b d++没有被执行
return 0;
}
##关于switch语句
- switch语句更适合实现多分支的情况
- switch语句的语法形式
switch (expression)
{
case value1:statement
case value2:statement
default:statemrnt
}
- switch后的表达式必须是整形表达式
- case后的值必须是整型常量表达式
- case语句后要加上break, 否则将会继续向下执行后面的case
- switch的强项是处理离散的数据
- default子句用来处理错误的输入