if else
一个比较坑的东西
大家可以猜一下这段代码的结果
#include <stdio.h>
int main()
{
int a = 0, b = 2;
if (a == 1)
if (b == 2)
printf("呵呵");
else
printf("哈哈");
return 0;
}
这段代码晃眼一看觉得输出结果是 哈哈 ,但其实 什么都不会输出 因为else会自动匹配最近的一个if, 也就是第二个if,只不过我们这里else缩进与第一个 if相对应,就很容易误导我们
解决方案 : 一般在 if 和 else后面的语句体都要加 { },这样不容易发生这样的小错误
switch case
switch的运行流程
先看一下三次输出的结果
1.当case=1时
 2.当case=2时
 3.当执行语句后面加 break 时

总结 : case 是入口函数,当case后面的值满足了 switch 所包含的值,程序就开始执行,一直到每个case后的执行语句都执行完; 而break是出口函数,如果想要实现输入对应的case数就只执行对应的执行语句,那么就需要在每个case后加 break.
补充: case后必须跟整数常量
灵活运用
假设我们输入1-5打印工作日,输入6-7打印休息日
  可见,并不是一定要在每个后面都加break.因此,并不是一定要拘泥与某一种形式,具体用法还是要参考具体的需求.
default
当所有case子句都不满足时,就执行default的执行语句; default放的位置不影响结果,但一般都放在所有case子句的后面

一道例题
 结果是 5,3
|