A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© canhotboy 中级黑马   /  2015-4-13 21:21  /  4475 人查看  /  45 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

if和switch的区别有哪些呢

45 个回复

倒序浏览
其实我也想问这个问题,有了答案,给我说一声,谢谢
回复 使用道具 举报
这个嘛不太清楚,不过百度应该知道一些的,呵呵
回复 使用道具 举报
这两个条件结构在很多的情况的都是可以互换的吧,在数值的较多的情况下,还是if结构方便很多
回复 使用道具 举报
switch能做的事情,if都能做,if能做的事情,switch不一定都能做
回复 使用道具 举报
基础视屏里都有的,好好看看基础视屏,就一切ok!
回复 使用道具 举报
这个都不知道,你才学到哪里啊
回复 使用道具 举报
if的灵活性比switch高,switch能完成的if都可以完成,所以你不用纠结这个问题,用if就可以了。
回复 使用道具 举报
执念 中级黑马 2015-4-15 21:46:18
9#
if比switch更适用于范围的判断,if()判断条件可以是任何带真假性的数,switch()判断条件只能是整形的数(ASCII码对应整形)
回复 使用道具 举报
视频总结:
1.很多情况下,两者可以互换。
2.if用的较多,比较灵活,而switch只能某个单值。
回复 使用道具 举报
if更灵活一些,,
回复 使用道具 举报
逆流瞅瞅 发表于 2015-4-15 22:17
视频总结:
1.很多情况下,两者可以互换。
2.if用的较多,比较灵活,而switch只能某个单值。 ...

:handshake
回复 使用道具 举报
区别:
1 if语句能够完成的功能switch并不一定能完成;
2 在某些情况下,if好switch语句可以相互转化;
3 switch能够完成的功能if语句都能完成的
希望能够帮到你,哈哈
回复 使用道具 举报
最好的安排 发表于 2015-4-17 13:03
区别:
1 if语句能够完成的功能switch并不一定能完成;
2 在某些情况下,if好switch语句可以相互转化;

:handshake
回复 使用道具 举报
if是条件判断语句而swich是条件选择语句,一个负责判断是否符合条件要求,一个根据已经给出的条件,选择执行的代码块。
回复 使用道具 举报
各有各好
回复 使用道具 举报
本帖最后由 xiniuniu 于 2015-4-17 19:29 编辑

这个主要看编译器特性, 一般情况下, 当switch分支小于等于3个时, 生成的代码和if else几乎没有太大差别,  如果分支在4个以上, 编译器则会对代码进行算法上的优化,  比如
  1.         int a = 2;
  2.         
  3.         switch (a)
  4.         {
  5.             case 1:
  6.                 printf("1");
  7.                 break;
  8.                
  9.             case 2:
  10.                 printf("2");
  11.                 break;
  12.                
  13.             case 4:
  14.                 printf("4");
  15.                 break;
  16.                
  17.             case 5:
  18.                 printf("5");
  19.                 break;
  20.                
  21.             case 7:
  22.                 printf("7");
  23.                 break;
  24.                
  25.             default:
  26.                 break;
  27.         }

  28.     }
复制代码

代码会生成一个指针数组, 这个数组中一共有7个元素, 每个元素分别指向   不同case所对应代码起始处的地址
如上例, a = 2,  首先对a 进行减1操作  得到1,
然后1 和6比较, 看是否大于 6,  大于 6 直接跳到default代码处
不大于6 ,再和0比较, 小于0, 直接跳到default处
不小于0, 则直接执行 以1为下标的数组中指向地址处代码


如果用if else可能要判断很多次, 而用以上优化后的代码,最多也就判断3次, 如果case语句有几十个的情况下呢? 显然这时要比if  else效率得多
较少的分支用if else 和switch都无所谓,   当分支较多,而又比较连续, switch是不二之选

回复 使用道具 举报
:handshake
回复 使用道具 举报
if使用于 比较范围 switch适用于比较“点”的值
for example:比如你想确定一个变量是否在一个区间上面时 用if;而当 你想比较一个变量是否为某一个值时 用switch. PS:switch结构中可以用枚举来替代具体的值 这样可读性好。

结论:完全可以用if替代switch使用,但是在比较“点” 的情况下,在下还是喜欢用switch,感觉可读性好些。PS:好像最新的swift 语言的switch语句 已经可以支持比较范围区间了。
回复 使用道具 举报
switch的case分支必须是常量,没有if …… else if……用着灵活,因此用得比较少。
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马