------
Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1.基本形式:if
其语义是:如果表达式的值为真,则执行其后的语句,否则不执行该语句。其过程可表示为下图。
如:
if (max<b) max=b;
switch(表达式){
case 常量表达式1: 语句1;
case 常量表达式2: 语句2;
case 常量表达式3: 语句3;
case 常量表达式4: 语句4;
case 常量表达式5: 语句5;
case 常量表达式n: 语句n;
default:
语句n+1;
}
首先计算“表达式”的值,然后从第一个 case 开始,与“常量表达式n”进行比较,如果值不相等,就不执行对应的语句n;值相等,它会执行后面所有的case对应的语句。如都不等,则执行 default 后的“语句 n+1”。
为了避免某个case语句执行完成后,并没有结束(case穿透),而直接向下执行其他的case语句
我们需要在每一个case语句结束之后,加上一句话:break;
break 作用 是结束switch语句
switch语句的表达式类型
1)可以放一个整型的变量 int num = 10;switch (num)
2)可以放一个整形常量 switch (10)
3)可以放一个返回值是整型的表达式 switch (5+5),num = 5+5
4)还可以放可以转换为int类型的表达式 switch ('a'+'a') a的ascii码为97 相当于97+97
5)break语句是可选的,可以加也可以不加
case语句的注意事项
0) case语句格式: case 常量表达式: (空格和冒号不能省)
1) 可以是常量 case 10:
2) 如果放表达式,那么只可以是常量表达式 case 5+5:
3) default语句的位置可以任意放
4) case的穿透问题,同样适用于 default
5) 如果default语句放到 switch语句的最后,可以不加break
如果不是放到最后,是必须加上break的
6) case 后面不能是实数
7) case 语句之后,默认的第一句话不能定义定义变量
如果第一句话非要定义,应该加上大括号
case 10:
{ int num2=3;
printf|("num=%d",num);
break; }
8) 编译器xcode的bug
case 10:
printf("num = %d\n",num);
int num2 = 3;
break;
case 11:
printf("num2 = %d\n",num2);
break;
num2在case10中 但case11可以使用
1.基本形式:if
if(表达式) 语句
用if语句判别max和b的大小,如max小于b,则把b赋予max。
2.if-else
if(表达式)
语句1;
else
语句2;
其语义是:如果表达式的值为真,则执行语句1,否则执行语句2 。其执行过程可表示为下图。
输入两个整数,输出其中的大数。改用if-else语句判别a,b的大小,若a大,则输出a,否则输出b。
3.if-else-if形式
前二种形式的if语句一般都用于两个分支的情况。当有多个分支选择时,可采用if-else-if语句,其一般形式为:
if(表达式1)
语句1;
else if(表达式2)
语句2;
else if(表达式3)
语句3;
…
else if(表达式m)
语句m;
else
语句n;
其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句n。然后继续执行后续程序。 if-else-if语句的执行过程如下图所示。
如:
#include <stdio.h>
int main(void){
int a, b;
printf("input two numbers: ");scanf("%d%d",&a,&b); if(a>b) printf("max=%d\n",a); else printf("max=%d\n",b); return 0; }
3.if-else-if形式
前二种形式的if语句一般都用于两个分支的情况。当有多个分支选择时,可采用if-else-if语句,其一般形式为:
if(表达式1)
语句1;
else if(表达式2)
语句2;
else if(表达式3)
语句3;
…
else if(表达式m)
语句m;
else
语句n;
其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句n。然后继续执行后续程序。 if-else-if语句的执行过程如下图所示。
如:
int main(int argc, const char * argv[]) {
int num=0;
printf("请输入一个数字:\n");
scanf("%d",&num);
if (num == 5) {
printf("恭喜你\n");
}else{
if (num > 5) {
printf("大于5了\n");
}else{
printf("小于5了\n");
}
}
return 0;
}
输入数字后先判断是否等于5,如不等于进去else条件中。在判断是否大于5,如不是则小于5。
使用if语句的几个注意点:
1.空语句
if (a==3); 没有可执行语句,什么都没干
2.if之后的代码块如果只有一句话,则可以省略大括号
if (a>3)
printf("a>2\n");
只会影响这一句话。
3.永真式和永假式
if(1){ } //大括号中永远执行
if(0){ } //大括号中永远不会执行
4.if语句结合return 语句
if (a>3)
return 0;
如果a>3为真,在这个函数中,return语句之后的语句都不会执行。
5.if作用域的问题
if (a==3) {
int num = 10;
}
printf("num = %d\n",num);
并不能打印出num的值,超出代码块范围。
6.容易疑惑的地方 作用域的紊乱
if(a==3)
int num = 10;
虽然大括号可以省略,但会报错。可以改成
if(a==3)
{ int num = 10;}