目录
- #include
- int main()
- {
- int a = 0;
- int b = 2;
- if(a == 1)
- if(b == 2)
- printf("hehe\n");
- else
- printf("haha\n");
- return 0;
- }
else的匹配:else是和它离的最近的if匹配的
if...else...合起来是一条语句
所以不会输出hehe
代码这样改才会输出hehe
(放一条空语句在if语句后面,这样就是两个地位相等的if语句啦)
- #include
- int main()
- {
- int a = 0;
- int b = 2;
- if(a == 1) ;
- if(b == 2)
- printf("hehe\n");
- else
- printf("haha\n");
- return 0;
- }
可见,这样的代码极易让人产生误会,
我们需要有好的代码风格:该对齐就要对齐,该带{ }就要带{ }。
- #include
- int main()
- {
- int a = 0;
- int b = 2;
- if(a == 1)
- {
- if(b == 2)
- {
- printf("hehe\n");
- }
- }
- else
- {
- printf("haha\n");
- }
- return 0;
- }
当然,整型常量表达式是字符常量表达式也是可以的,字符在内存中存的是ASCII码值,ASCII码值是整型。
- #include
-
- int main()
- {
- char day = 0;
- scanf("%c", &day);
- switch(day)
- {
- case 'a':
- case 'b':
- case 'c':
- printf("小写字母\n");
- break;
- case 'A':
- case 'B':
- case 'C':
- printf("大写字母\n");
- break;
- default:
- break;
- }
-
- return 0;
- }
首先,switch根据switch后面表达式的值决定它匹配哪个case语句,就从哪个case语句进去
进去之后,按顺序执行,直到遇到break,跳出switch语句。
case决定入口,break决定出口。没有break,就会一直往下执行,直到遇到break;
- #include
-
- int main()
- {
- int day = 0;
- scanf("%d", &day);
- switch (day)
- {
- case 1:
- case 2:
- case 3:
- case 4:
- case 5:
- printf("weekday\n");
- break;
- case 6:
- case 7:
- printf("weekend\n");
- break;
- default:
- printf("选择错误\n");
- break;
- }
-
- return 0;
- }
1.2.3 switch 语句可以嵌套使用
- #include
- int main()
- {
- int n = 1;
- int m = 2;
- switch (n)
- {
- case 1:
- m++;
- case 2:
- n++;
- case 3:
- switch (n)
- {//switch允许嵌套使用
- case 1:
- n++;
- case 2:
- m++;
- n++;
- break;
- }
- case 4:
- m++;
- break;
- default:
- break;
- }
- printf("m = %d, n = %d\n", m, n);
- return 0;
- }
综上,其实,default 和 case语句 的执行大差不差。都是入口,然后遇到break才会跳出switch语句,否则就一直往下执行。