关于switch中default的用法 以及case的用法

关于switch中default的用法 以及case的用法

switch(表达式)

括号中的表达式类型:整型、字符型、布尔型、枚举型

switch()语句的括号内的表达式必须是整型,它要与case 里的值呼应

字符型,只有字符常量可以,例如 'a' 'b' '6' '\r' 可以由ASCLL码转换成整型

布尔型 -- 真,假, 实际上是 0, 1

enum(枚举) 型也可以

凡表达式值为整型的都可以

case 常量标号:

case后面的常量标号,其类型应与表达式的数据类型相同。表示根据表达式计算的结果,可能在case的标号中找到,标号不允许重复,具有唯一性,所以,只能选中一个case标号。尽管标号的顺序可以任意的,但从可读性角度而言,标号应按顺序排列

注意点:switch 语句中不能有continue, 除非switch本身就属于for或while循环的一部分

程序示例1:

/*******************************************************************************************************/

by linqiang

/*******************************************************************************************************/

int main(void)

{

int i = 0;

char c = 'a';

switch (5)

{

case 5.366://在vs2019中程序是通过的 程序将双精度浮点型的5.366转换成整型的5 输出结果是嘿嘿 但是应该避免

printf("heihei");

break;

case 0:

printf("haha");

break;

default:

printf("xixi");

break;

}

 

return 0;

}

例子中switch(5)里面的5换成整型变量i或者是字符串变量c 都是可以的

case语句后面的常量标号换成 case 1: 或者 case 'a':也是可以的 编译软件都可以隐式转换成ASCLL码对应的数字

以及case 5.366 这种写法应该要避免这样写

switch (5)

{

case 0:

printf("haha");

break;

case 0:

printf ("heihie");

break;

default:

printf("xixi");

break;

}

程序会报错 因为case后面的常量标量重复的 已经存在一个case 0:了

/*******************************************************************************************************/

 

程序示例2:

/*******************************************************************************************************/

by linqiang

/*******************************************************************************************************/

switch (1)

{

case 1:

b = 3;

case 2:

b = 4;

//break 加入这里加上break 那么switch(1)输出结果是4

case 3:

b = 5;

default:

b = 6;

}

当每个case语句中都没有break函数的时候 程序最终输出 printf("%d\n", b);//输出6

因为每个case语句中都没有break函数去终止当前程序的switch语句 switch()中表达式等于1, 程序会从case1开始一直往下执行一直到default执行完结束 , 如果switch(4) 则直接跳转到default语句中,b=6 也是输出6 如果在case 2:下面的b=4末尾加上一句break 那么switch(1)输出结果是4

因为经过case 1 再到case 2 b=4之后 break终止了switch语句

/*******************************************************************************************************/

 

程序示例3:

/*******************************************************************************************************/

by linqiang

/*******************************************************************************************************/

switch (a)

{

case 1:

b = 3;

break;

case 2:

b = 4;

break;

case 3:

b = 5;

break;

default:

b = 6;

break;

}

当a等于1的时候 程序在case 1处执行了b=3的赋值语句 接着break 直接终止了switch语句 那么程序最终的输出结果是b等于6 语句中存在break语句的时候 当对应的case语句结束后 程序break就终止了switch 不会往下执行

/*******************************************************************************************************/

 

程序示例4:

/*******************************************************************************************************/

by linqiang

/*******************************************************************************************************/

switch (5)

{

default:

b=5;

case 1:

b = 3;

break;

}

default 可以放在case的前面 不影响程序的使用 输出结果b等于3 因为switch表达式中是5 case中没有对应的case语句 所以执行default 得到b等于5 但是因为没有break语句 所以继续执行case 1 得到b等于3

/*******************************************************************************************************/

 

你可能感兴趣的:(自用复习,c语言)