if-elseif-else
注意点1:
- if(表达式为真,即非0) --> 执行{}中的语句
- {}中语句是两条,不可省略{}
int age = 22;
if (age < 18) // 当表达式为真,即非0时执行{}中的语句
{ //{}中语句是两条,不可省略{}
printf("未成年人\n");
printf("不能饮酒\n");
}
else if (age >= 18 && age < 28)
printf("青年\n"); // 当{}中语句只有一条时,可省略{}
else
{ //{}中语句是两条,不可省略{}
printf("成年人");
printf("可以打游戏");
}
注意点2:
- else和离它最近的if进行匹配,注意因对其格式问题而导致误判结果
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("hehe\n");
// 这个else是和if(b==2)来匹配的
// 即使else和上边的if(a==1)对齐也要能看出这个else是和离它最近的if(b==2)来匹配的
else
printf("haha\n");
注意点3:
当用==判断变量存储的数是否和常量相等时为避免将"=="写为"="可以采用"常量==变量"格式
int num = 3;
if (5 == num) // "常量==变量"格式,等价于if(num==5)
{
printf("haha\n");
}
if (5 = num) // 漏写 = 编译器会报错
{
printf("haha\n");
}
switch-case-default-break
注意点:
- switch(整型表达式)
- case 整型常量表达式(字符也可以,因为存的是ASCII码):
- 没有break要继续执行下一个case分支
- 一个switch语句配一个default:,default最好也要搭配break一起用
- switch允许嵌套但嵌套的switch遇到break时只中断本层嵌套的switch
int n = 1;
int m = 2;
switch (n) // switch(整型表达式)
{
case 1: // case 整型常量表达式(字符也可以,因为存的是ASCII码)
m++; // 没有break要继续执行下一个case分支
case 2:
n++; // 没有break要继续执行下一个case分支
case 3: // 没有break要继续执行下一个case分支
switch (n) // switch允许嵌套
{
case 1:
n++;
case 2:
m++;
n++;
break; // 这个break中断的是嵌套的switch不会把外面大的switch也中断
}
case 4:
m++;
break; // 有break,执行这个case后中断,程序结束
default:
break;
}
printf("m=%d, n=%d\n", m, n); // m=5,n=3