例如,与其使用下述代码:
if (x ==l)
printf ("x is equal to one. \n");
else if (x ==2)
printf ("x is equal to two. \n");
else if (x = =3)
printf ("x is equal to three. \n");
else
printf ("x is not equal to one, two, or three. \n");
不如使用下述代码,它更易于阅读和维护:
switch (x)
{
case 1: printf ("x is equal to one. \n");
break;
case 2: printf ("x is equal to two. \n");
break
case 3: printf ('x is equal to three. \n");
break;
default: printf ("x is not equal to one, two, or three. \n");
break;
}
注意:使用switch语句的前提是条件表达式必须基于同一个数字型变量。例如,尽管下述if语句包含两个以上的条件,但该例不能使用switch语句,因为该例基于字符串比较,而不是数字比较:
char *name="Lupto";
if(!stricmp(name,"Isaac"))
printf("Your name means'Laughter'.\n");
else if(!stricmp(name,"Amy"))
printf("Your name means'Beloved'.\n");
else if(!stricmp(name,"Lloyd"))
printf("Your name means'Mysterious'.\n");
else
printf("I haven't a clue as to what your name means.\n");
希望能帮到你。
作者: 林康春 时间: 2012-7-7 23:52
if 和switch 语句很像.
具体什么场景下,应用哪个语句呢?
如果判断的具体数值不多,而是符号byte,short int char 四种类型.
虽然2个语句都可以使用,建议使用switch语句.因为效率稍高.
其他情况:对区间判断,对结果为boolean 类型判断,使用if if的使用范围更广。
if 除了能判断具体数值还能判断区间。switch 判断区间会很费劲的。要写好多case 对于运算结果是boolean型的 if 能判断 switch 是不能实现的。
实际开发怎么选择呢。
如果要对具体数值进行判断,并且数值不多,那么 就用switch 来完成。 Switch 是一开始就全部加载进了内存,而if 语句要顺序执行,需要多个if 和else if 执行过程就要比switch 稍微多了一点。
但是switch 的局限性比较大必须是4种类型,并且值不多。一般都是使用if 最后在jdk 7中对switch 进行了增强 还可以判断字符串。5.0 增加了对枚举的判断。
这是我总结的一点体会,希望对你有帮助。作者: 孙浩迪 时间: 2012-7-8 00:10
switch与if的区别
switch(a)
{
case 1:
//...
break;
case 2:
//...
break;
case 3:
//...
break;
}
在这个程序片段中,只在开头switch的括号中取出变量a的值,然后逐一比较下面的case,效率的差别就在这儿。当然并不是使用if就不好,遇到复合条件时,switch就帮不上忙了,由于无法在switch中组合复杂的条件语句,这时就得使用if了。简单地说,if与switch两者可以搭配着灵活使用。作者: 冯大卫 时间: 2012-7-8 00:20
if 语句适用范围比较广,只要是 boolean 表达式都可以用 if 判断;而 switch 只能对基本类型进行数值比较。两者的可比性就仅限在两个基本类型比较的范围内。
说到基本类型的数值比较,那当然要有两个数。
if 语句每一句都是独立的,看下面的语句:
if (a == 1) ...
else if (a == 2) ...
这样 a 要被读入寄存器两次,1 和 2 分别被读入寄存器一次。于是你是否发现其实 a 读两次是有点多余的,在你全部比较完之前只需要一次读入寄存器就行了,其余都是额外开销。但是 if 语句必须每次都把里面的两个数从内存拿出来读到寄存器,它不知道你其实比较的是同一个 a。
于是 switch case 就出来了,把上面的改成 switch case 版本:
switch (a) {
case 0:
break;
case 1:
}
所以switch 语句要更高效作者: 付蛟龙 时间: 2012-7-8 00:22
switch语句与if语句不同之处在于: switch语句仅能测试相等的情况,而if语句能够计算任何类型的布尔表达式,也就是switch语句仅查找表达式值与某个case常量是否匹配.而if-else是判断条件语句为真还是假。
在实际的代码中,可以根据需要来使用对应的语句实现程序要求的逻辑功能。作者: 黑马-李勇 时间: 2012-7-8 00:59
如果有连着的5个if else if else if else if else 那么阅读性就...这时如能用switch至少阅读性好吧。至于用哪个,视情况而定吧,switch语句有一定局限性吧。