黑马程序员技术交流社区

标题: switch [打印本页]

作者: 红双喜    时间: 2015-7-27 22:54
标题: switch
在基础视频里有一节讲到switch语句这块,讲了几个小程序
以下是老师的代码
#include <stdio.h>

int main(int argc, const char * argv[]) {
    int season;
    printf("请输入月份\n");
    scanf("%d",&season);
   
    if(season<1 || season>12){
        printf("请输入正确的月份\n");
        return 0;}
    switch (season){
    case 11:
    case 12:
    case 1:
   
        printf("冬季\n");
            break ;
   
    case 2:
    case 3:
    case 4:
   
    printf("春季\n");
            break;
   
    case 5:
    case 6:
    case 7:
            
            
    printf("夏季\n");

            break ;
    case 8:
    case 9:
    case 10:

    printf("秋季\n");
            break;
}
return 0;
}



那么问题来了,老师判断输入是否合法时为什么不使用default;提示用户输入合法的月份,而是要用if
用default;会有什么不好的后果么?default貌似很方便啊。
我只知道如果用if的话若为假程序则不会执行,这一点的考虑是不是为了缩短运算时间?除了这个还有其他原因么?
作者: 红双喜    时间: 2015-7-27 22:55
  1. #include <stdio.h>

  2. int main(int argc, const char * argv[]) {
  3.     int season;
  4.     printf("请输入月份\n");
  5.     scanf("%d",&season);
  6.    
  7.     /*if(season<1 || season>12){
  8.         printf("请输入正确的月份\n");
  9.         return 0;}*/
  10.     switch (season){
  11.     case 11:
  12.     case 12:
  13.     case 1:
  14.    
  15.         printf("冬季\n");
  16.             break ;
  17.    
  18.     case 2:
  19.     case 3:
  20.     case 4:
  21.    
  22.     printf("春季\n");
  23.             break;
  24.    
  25.     case 5:
  26.     case 6:
  27.     case 7:
  28.             
  29.             
  30.     printf("夏季\n");

  31.             break ;
  32.     case 8:
  33.     case 9:
  34.     case 10:

  35.     printf("秋季\n");
  36.             break;
  37.             
  38.     default :
  39.     printf("请输入正确的月份\n");

  40.   
  41.             
  42.             
  43.             
  44.     }
  45.     return 0;
  46. }
复制代码

作者: 红双喜    时间: 2015-7-27 22:57
我这样也用的好爽啊,用if还要自己想小于谁,大于谁。
作者: 王远飞    时间: 2015-7-27 23:32
你说的好有道理,我竟无言以对啊
作者: 1312878967    时间: 2015-7-27 23:41
在switch语句中,如果没有任何 case 表达式与开关值匹配,则控制传递给跟在可选 default 标签后的语句。如果没有 default 标签,则控制传递到 switch 以外
作者: 865061682    时间: 2015-7-27 23:41
if不 是判断吗 default应该是判断之后才用的 吧
作者: 红双喜    时间: 2015-7-28 00:10
王远飞 发表于 2015-7-27 23:32
你说的好有道理,我竟无言以对啊

不是吧。
作者: lclofty    时间: 2015-7-28 00:35
应该为了省内存吧 if条件不成立的话 后面就都不执行了
作者: archdem1    时间: 2015-7-28 11:07
用if可读性更强。
作者: liusuizuoyou    时间: 2015-7-28 11:42
用   default;  怎么  提示用户输入合法的月份???
作者: 丁铭检    时间: 2015-7-28 22:31
老师是的代码只是为了能让初学者更容易理解而已。。。没你想的那么复杂!!!
作者: 刘唐飞    时间: 2015-7-29 01:44
c语言里面的语法很多都可以替换
作者: 飞翔的猪    时间: 2015-7-29 10:31
这个问题就好像你买了面包,你不看生产日期过不过期,反而要咬一口去判断过不过期一个道理
作者: wy911011    时间: 2015-7-29 10:37
:victory::victory::victory:
作者: lixianzhu0712    时间: 2015-7-29 19:34
好牛逼的样子!
作者: 小林儿    时间: 2015-7-29 21:11
两者完全可以互相替换!至于你说内存问题=。=还有运算速度问题,完全可以忽略
作者: 原晓桢    时间: 2015-7-29 21:13
开始我也有这样的想法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2