C++ 关于 switch() 括号中表达式类型的简单问题。

数码玩艺 2013-01-25 07:47:47
switch() 括号中的表达式 到底是任何类型还是整数,字符,枚举类型?
为什么我用bool类型也可以通过?

bool a;
cin>>a;
switch(a)
{
case 0: cout<<"假"<<endl; break;
case 1: cout<<"真"<<endl; break;
default:cout<<"同真,可省略此句"<<endl;
}

谭浩强的书中写的是“允许为任何类型”
c++ primer plus中写的是 ”最常见的标签是int或char常量,也可以是枚举型“。

这里到底是怎么样的,希望可以详细的说下各种情况,谢谢
...全文
971 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
漫步者、 2013-01-27
  • 打赏
  • 举报
回复
那本书烧了吧,还任意类型呢???
zhishiheng 2013-01-27
  • 打赏
  • 举报
回复
引用 14 楼 ganpengjin1 的回复:
那本书烧了吧,还任意类型呢???
谭的书真心不行。。。。。。
数码玩艺 2013-01-25
  • 打赏
  • 举报
回复
引用 12 楼 Only_phantasy 的回复:
引用 11 楼 zkr33928 的回复:引用 10 楼 Only_phantasy 的回复: 引用 9 楼 zkr33928 的回复:谢谢各位 结贴 楼主可以尝试下可以给case赋甚么值。 我写个小数,提示我必须我整形常量表达式,这个书上倒的说是清楚 着啊!这不就行啦,别再钻牛角尖啦。
嗯 谢谢 呵呵 我这人是爱钻牛角尖。。
I'm Daniel Du 2013-01-25
  • 打赏
  • 举报
回复
引用 11 楼 zkr33928 的回复:
引用 10 楼 Only_phantasy 的回复: 引用 9 楼 zkr33928 的回复:谢谢各位 结贴 楼主可以尝试下可以给case赋甚么值。 我写个小数,提示我必须我整形常量表达式,这个书上倒的说是清楚
着啊!这不就行啦,别再钻牛角尖啦。
数码玩艺 2013-01-25
  • 打赏
  • 举报
回复
引用 10 楼 Only_phantasy 的回复:
引用 9 楼 zkr33928 的回复:谢谢各位 结贴 楼主可以尝试下可以给case赋甚么值。
我写个小数,提示我必须我整形常量表达式,这个书上倒的说是清楚
I'm Daniel Du 2013-01-25
  • 打赏
  • 举报
回复
引用 9 楼 zkr33928 的回复:
谢谢各位 结贴
楼主可以尝试下可以给case赋甚么值。
数码玩艺 2013-01-25
  • 打赏
  • 举报
回复
谢谢各位 结贴
I'm Daniel Du 2013-01-25
  • 打赏
  • 举报
回复
引用 6 楼 zkr33928 的回复:
这意思 只要是整数的就行是吧 试了下数组也行,浮点就不行 还有其他的类型吗?
枚举类型被引用时会被解释成整型的。 举个例子?比如Win程序设计中,处理消息时,WM_*的实质均是用#define定义的整数。 总的来说,因提供给case的判断量必须为常量表达式,故提供给switch的选择量应具有被转换成常量表达式的性质。
libralibra 2013-01-25
  • 打赏
  • 举报
回复
所有能转为int的类型都可以 char可以看做unsigned int bool就是0或者1 枚举类型的定义就有一种像: enum test { test1 = 0, test2 = 1 } 其实switch还可以传入一个类,但是必须给类定义到int的转换operator int()
数码玩艺 2013-01-25
  • 打赏
  • 举报
回复


这意思 只要是整数的就行是吧
试了下数组也行,浮点就不行
还有其他的类型吗?
数码玩艺 2013-01-25
  • 打赏
  • 举报
回复
还有什么类型的也可以,能否举个例子,谢楼上各位
derekrose 2013-01-25
  • 打赏
  • 举报
回复
bool型属于可列举的,所以按照语义应该可以
阿麦 2013-01-25
  • 打赏
  • 举报
回复
更正一下(换台电脑打字老错) false 为 0 true 为1。但非也判断为true
阿麦 2013-01-25
  • 打赏
  • 举报
回复
false,为0 true,为非1。但非0也判断为true 所以,你的switch(a)是可以的 楼上说的不全对。true和false是八位的,int却是32位。 TRUE和FALSE才是32位
c1997sdn 2013-01-25
  • 打赏
  • 举报
回复
bool型实质上也是int型,所以也是可以的。

33,312

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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