| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1254 人关注过本帖
标题:关于switch的问题
只看楼主 加入收藏
daybreaker
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-10-15
收藏
得分:0 
不是只有整型跟字符型吗?
2011-02-01 15:13
njzhangyuhao
Rank: 2
等 级:论坛游民
帖 子:197
专家分:35
注 册:2010-11-20
收藏
得分:0 
我在想要是书上错了不会一起错吧 是不是期间有什么改革?
2011-02-01 21:49
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
应该一直都是只能整形。我觉得老谭在忽悠人。

你的那个在 TC 下试验的代码是什么?发上来看看。
2011-02-01 23:37
njzhangyuhao
Rank: 2
等 级:论坛游民
帖 子:197
专家分:35
注 册:2010-11-20
收藏
得分:0 
main()
{
 float a=1.0;
 switch(a)
 {
  case 1.0:printf("ss");
 }
}
显示正确 但如果把1.0换成1.1就会错误 不知道怎么搞的
2011-02-01 23:47
njzhangyuhao
Rank: 2
等 级:论坛游民
帖 子:197
专家分:35
注 册:2010-11-20
收藏
得分:0 
TURBOc2.0环境
2011-02-01 23:47
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
你自己多试几个例子,总结总结规律呗。
八成就是编译器发现不是整形的就试着瞎转转,以便生成代码。其实是不支持的。 
对于硬件来说,比较整形数值和比较浮点数值有很大的区别。虽然从 C 语言上看代码几乎一样,但本质区别很大(想想浮点数的编码方式就不难理解这点了)。标准里有好多限制其实是为了编译器能生成更简洁有效的代码而加的。

TC 比较老,不支持也不报错说一下。这种编译器用多了其实不是很好。
2011-02-02 00:30
wewoor
Rank: 1
等 级:新手上路
帖 子:25
专家分:5
注 册:2010-10-4
收藏
得分:0 
回复 楼主 njzhangyuhao
只能是整型。
2011-02-03 15:01
丞相杀手
Rank: 6Rank: 6
等 级:侠之大者
帖 子:203
专家分:462
注 册:2011-1-11
收藏
得分:0 
由于switch case 语句中要隐藏着 == 比较,而浮点型数据本身在计算机中并不精确,所以,switch case 接收浮点型数据时,结果不可预测

斗不过疯子,不参与争论。
2011-02-03 20:17
qq312154421
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:124
专家分:120
注 册:2010-6-7
收藏
得分:0 
学习了。。。。

勤奋不止,自强不息。
2011-02-03 23:34
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
以下是引用丞相杀手在2011-2-3 20:17:56的发言:

由于switch case 语句中要隐藏着 == 比较,而浮点型数据本身在计算机中并不精确,所以,switch case 接收浮点型数据时,结果不可预测

倒不是因为这个原因。

不过这个无所谓。知道 switch 只能用于整形就行了。
2011-02-04 16:56
快速回复:关于switch的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027965 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved