3.1 if
若不希望else与最近的if语句配对,可以用大括号{ }将该if语句括起来
3.2 Switch Case
switch
语句是一种在多个可能情况下选择执行的控制流语句。它通常与case
语句一起使用。
语法
C |
---|
| switch (表达式) {
case 值1:
// 代码块1
break;
case 值2:
// 代码块2
break;
// 可以有多个case
default:
// 如果上面的case都不匹配时执行的代码块
}
|
- 一定要注意有没有break
- 若switch中的表达式的值不是整数则自动取整
- case和default后的语句可以是复合语句,且不用加{ }
- 常量表达式的语句可以省略,多个case共用一组执行语句
- default可以置于case之间,default后case中的语句会继续执行
C |
---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 | #include <stdio.h>
int main()
{
int i;
scanf("%d",&i);
switch(i)
{
case 1:
printf("1");
break;
default:
printf("2");
case 2:
printf("3");
break;
case 3:
printf("4");
break;
}
}
|
- switch无优先级,if有优先级
做题总结
C |
---|
| #include <stdio.h>
int main()
{
int x = 5;
if(x++>5)
printf("%d",x);
else
printf("%d",x--);
printf("%d",x);
}
|
注意:极其重要!!在if(x++>5)中,x已经加了1了!在后续printf中的x--中,先输出x,再将x的值减1。
C |
---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 | #include <stdio.h>
int main()
{
int k=5,n=0;
while(k>0)
{
switch (k)
{
default:break;
case 1:n+=k;
case 2:
case 3:n+=k;
}
k--;
}
printf("%d",n);
}
|
C |
---|
| #include <stdio.h>
int main()
{
int a=1,b=2,c=3,d=0;
if(a==1&&b++==2)
if(b!=2||c--!=3)
printf("%d,%d,%d\n",a,b,c);
else if("%d,%d,%d\n",a,b,c);
else printf("%d,%d,%d\n",a,b,c);
//答案是1,3,3
}
|
这是因为b!=2之后的语句被||短路了。
C |
---|
| #include <stdio.h>
int main()
{
int a=0,b=0,c=0,d=0;
if(a=1)b=1;c=2;
else d=3;
printf("%d %d %d %d",a,b,c,d);
}
|
此处会编译错误,因为else前无与之对应的if。
C |
---|
| case 1:****//正确
case 2+1:**//正确
case c:****//错误
case 2.0:**//错误
switch(a+b)//正确
switch(a==1)//正确
|
C |
---|
| #include <stdio.h>
int main()
{
int a=0,b=1,c=0,d=20;
if(a) d=d-10;
else if(!b)
if(!c)d=15;
else d=25;
printf("%d",d);
}
|
注意:相当于else if(!b)
{ if(!c)d=15;
else d=25; }
C |
---|
| if(a>b>c)
相当于
if((a>b)>c)
|