CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

结果为什么是passwarn?

楼主majiaking3(majiaking3)2005-05-17 21:50:59 在 C/C++ / C语言 提问

main()  
  {  
          int   n='c';  
          switch(n++)  
          {  
                  default   :printf("error");break;  
                  case   'a':case   'A':case   'b':case   'B':printf("good");break;  
                  case   'c':case   'C':printf("pass");  
                  case   'd':case   'D':printf("warn");  
          }  
          getch();  
  }  
  麻烦解释一下   问题如题   谢谢 问题点数:10、回复次数:7Top

1 楼tfq(大梦谁先觉)回复于 2005-05-17 22:16:48 得分 0

当前n='c',当然就从case   'c'这行开始执行阿,执行完这行没有break退出,继续往下执行阿。  
  另外不要把default放在前面,放后面好看些Top

2 楼majiaking3(majiaking3)回复于 2005-05-17 22:41:35 得分 0

那case   'C':case   'd':case   'D':这些还有判断能力吗?  
  怎么不判断照样可以执行后面的语句呢?Top

3 楼du51(郁郁思扬)回复于 2005-05-17 22:55:49 得分 0

不遇转移语句     一直向下执行.执行的时候跳过判断语句.  
  这样也有好处.比如说,  
  switch(c)  
  {case   'c':case   'C':printf("输出的是c");break;  
  case   'd':case   'D':printf("输出的是d");break;  
  ..................  
  }  
  这样至少不用你一个一个的来.呵呵.Top

4 楼majiaking3(majiaking3)回复于 2005-05-17 23:02:05 得分 0

如果是“不遇转移语句     一直向下执行.执行的时候跳过判断语句.”  
  case   'a':case   'A':case   'b':case   'B':printf("good");break;  
  那这里怎么不输出good来?不是执行完输出才break;的吗?Top

5 楼du51(郁郁思扬)回复于 2005-05-17 23:23:38 得分 5

从判断的入口处开始执行.  
  default是除其他外的条件.Top

6 楼yesiloveyou(下意识的弯了一下腰,TMD,踩狗屎了)回复于 2005-05-17 23:41:42 得分 5

n='c'  
  直接执行  
  case   'c':case   'C':printf("pass");  
  没有break;接下去执行  
  case   'd':case   'D':printf("warn");  
  退出;  
   
  switch(n)和switch(n++)是一样的///因为是后增运算  
   
  还有一个   下面这样写是正确的  
  case   'a':case   'A':case   'b':case   'B':printf("good");break;  
  相当于  
  case   'a':printf("good");break;  
  case   'A':printf("good");break;  
  case   'b':printf("good");break;  
  case   'B':printf("good");break;  
   
  Top

7 楼learnerlzh()回复于 2005-05-18 00:37:17 得分 0

这个真是高手如去,我真是学到也啊,Top

相关问题

  • 不懂为什么是这个结果!
  • 结果为什么会是这样呢?
  • 请问为什么结果是9?
  • 为什么是这个结果?
  • 为什么是这个结果呢?
  • 为什么结果总是0A0B ?
  • 为什么运行结果是这个!~
  • 为什么运行结果是这样
  • 这个结果是什么?又是为什么?
  • 下面的程序的结果为什么是零??????????????

关键词

  • 执行
  • 语句
  • case
  • 输出
  • good
  • printf
  • break
  • switch
  • default

得分解答快速导航

  • 帖主:majiaking3
  • du51
  • yesiloveyou

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo