C语言中if和switch有什么区别?

如题所述

if和switch的主要区别如下:


1)if的括号内的表达式可以分别是布尔类型的合法表达式、可以是所有大于0的正整数为true,反之为小于等于0的正整数为false、可以是常量、枚举;而switch括号内也符合前面if提到的外,就是当圆括号内为正整数只能是0或1,其它的正整数属于 default范围。这点可以看如下代码:

switch (2)  // 除了0和1的其它正整数
{
case false:  // 对应0
printf("false\n");
break;
case true:  // 对应1
printf("true\n");
break;
default: // 对应非0和1以外的正整数
printf("其它\n");
break;
}

2)尽管if括号内也支持常量、枚举但也是有前提的那就是常量或枚举必须要显式给出相应的数值。而switch则不必;

3)switch适合处理判断分支较多的情况下(代码可读性好),而if适合处理判断分支较少的情况下(反之代码可读性差,容易出现漏判或重复判断)。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-12
switch( 表达式)//这个地方不能加分号,表达式必须是字符型或整型
{ case E1 : 语句组 1; //case 与E1(即常量)之间用空格分隔
case E2 : 语句组 2;// case后的常量不能相同且常量后必须加冒号
…….
case En : 语句组 n;
[default: 语句组 ;]
}
执行过程:
一、计算
二、找case
三、从找到的case开始,往下全部执行
四、若没找到case,则从default开始往下全部执行,
若没default则结束switch语句。

if是选择结构,有三个形式,它们执行是条件成立只会选一个执行。
第一个:if (表达式)
语句;
第二个:if (表达式)
语句1;
else
语句2;

第三个:
if ( 表达式1 )
语句1;
else if (表达式2 )
语句2;
else if (表达式3 )
语句3;
…...
[ else
语句; ]本回答被网友采纳
第2个回答  2012-05-12
if 直接是选择的意思
如果(),执行()
否则,()
永远是否则后面没有条件,而且if 和 else 成对出现
switch 可以是多项选择且直接跳转
switch a : A
b : B
c : C
等等
这两个差很多~
你可以再仔细看看书
能用到SWITCH 语句的话,用IF 就很繁琐
但是简单的选择用IF 比较好了

希望能帮到你哦,请您采纳,刚刚玩,在做任务
第3个回答  2015-05-16
看情况。
if判断条件,处理逻辑表达式。
switch 通常处理算术表达式,或字符,当它等于什么什么,转向做什么。switch相当开关

如果“比较整数”,i1 是否大于 i2, 当然用if
如果决定转向,例如 i=1 画直线,i=2 画曲线,i=3 画圆,i=4 画虚线直线, i=5 画虚线曲线, i=6 画长方形 i=其他值 返回重选
这当然用switch,switch 执行快。
第4个回答  2012-05-12
使用的语句不一样呀,if的条件更多一些,switch后面必须有case 而且cas后面必须是规定的三种类型的数据!
相似回答