关于switch语句,谁来帮下

zqj50 2009-07-11 07:37:53
essential c++中有这样一个例子说能解释“向下穿越”的行为模式,但我不理解,希望好心人来帮下。
switch(next_char)
{
case'a':case'A':
case'e':case'E':
case'i':case'I':
case'o':case'O':
case'u':case'U':
++vowel_cnt;
break;
//......
}
代码如上,但是switch语句后的小括号内表达式的值不是必须为整数类型吗?
而且case后面怎么说a等字母,而不是整数值,谁来帮帮我。
...全文
86 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangsong_study 2009-07-13
  • 打赏
  • 举报
回复
你查一下潭浩强版本的大概第3,4章就知道了,那上面说了
zqj50 2009-07-13
  • 打赏
  • 举报
回复
谢了!
中才德创 2009-07-12
  • 打赏
  • 举报
回复
“向下穿越”是指-例如next_char事先为'A',它先不符合case'a'条件,就继续到下一行执行case'A',此时符合,直接跳到++vowel_cnt执行。后面的case不再执行了。
不妨看看反汇编,就更深有感触了。

由此看来,“向下穿越”是指,当next_char不符合当前case时,会继续找下一个case,直到找到第一个符合者为至,不找了。若一直没找到,就从最后一个case地方,离开了。


switch(next_char)
{
case'a':case'A':
case'e':case'E':
case'i':case'I':
case'o':case'O':
case'u':case'U':
++vowel_cnt;
break;
//......
}
taodm 2009-07-11
  • 打赏
  • 举报
回复
呃,建议换《c++ primer》作为入门书籍
blh 2009-07-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zqj50 的回复:]
谢了,但是这个向下穿越怎么理解
[/Quote]\
没有break
zqj50 2009-07-11
  • 打赏
  • 举报
回复
谢了,但是这个向下穿越怎么理解
WayminS 2009-07-11
  • 打赏
  • 举报
回复
是不是该注意一下两个单引号呢,相当于ASCII码
cjj53719114 2009-07-11
  • 打赏
  • 举报
回复
事实上,这个题的本质上任然是int型,应为字符型和int型是可以相互转换的,就比如说a的Ascii码97,实际上和‘a’是相等的
haierpro 2009-07-11
  • 打赏
  • 举报
回复
我认为可以这样理解,这里的整数类型,是非浮点型和结构体类型,字符型存的是ASCII码,也是整数值。
luohui8891 2009-07-11
  • 打赏
  • 举报
回复
ASCII码

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧