if语句
单分支语句
if(表达式)
{
语句; //表达式为真,执行此语句
}
双分支语句
if(表达式)
{
语句1;//表达式为真,执行此语句
}else
{
语句2;//否则执行语句2
}
多分支语句
if(表达式)
{
语句1;//表达式为真,执行此语句
}
else if(表达式)
{
语句2;//第一个表达式为假,第二个表达式为真,执行语句2
}
else
{
语句3;//两个表达式都为假,执行语句3
}
else 和if的匹配原则
就近匹配原则
代码中的else 匹配到的是第二个if
所以第一个if可以认为它是一个但分支结构
因为a不等于1,条件为假,所以无任何回显
如果想按第一个if语句为双分支结构的话,添加{}
如下:
所以个人建议,在编写代码的过程中充分利用好{}来区分代码块
下面这段代码,一个等号表示赋值,并不表示判断
两个等号才表示判断
而且建议判断的时候这样写:常量 == 变量,就像下面这段代码一样。
即使少写了一个等号,那也会在编译的时候报错,而不会等编译完之后才发现。
输出1-100之内的奇数 ,下面两段代码都可以
switch 分支语句
而如果不带break的话,结果是下面这样的,因为case 只判断入口,而break是用来判断出口的。
没有break,会从入口执行到程序尾部,所以需要break 来跳到switch语句之后。
而break视情况加,由代码的逻辑而定。
而且switch判断的只必须是整型,不然会报错的
case只能是整型常量表达式
case 后面跟变量也是不行的
可以看到,在这里我们规定了1-7 ,七个入口。但是如果输入的值超过了7,那么这段代码该如何处理呢
如下:
没有任何显示,因为在switch这个语句中并没有规定8的入口。
所以我们要在switch语句中加上一个default,如果在switch语句中没有匹配到入口点,那么就走default这条“路”
最后讲师出了个练习题,看一下m和n的结果,很简单,可以自己试一下。
int main()
{
int n = 1;
int m = 2;
switch (n)
{
case 1: m++;
case 2: n++;
case 3:
switch (n)
{
case 1: n++;
case 2: m++; n++; break;
}
case 4:m++;
default:
break;
}
printf("m=%d,n=%d\n", m, n);
return 0;
}