搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 关于switch的问题
标题:
关于switch的问题
只看楼主
daybreaker
等 级:
新手上路
帖 子:3
专家分:0
注 册:2010-10-15
第
11
楼
得分:0
不是只有整型跟字符型吗?
2011-02-01 15:13
njzhangyuhao
等 级:
论坛游民
帖 子:197
专家分:35
注 册:2010-11-20
第
12
楼
得分:0
我在想要是书上错了不会一起错吧 是不是期间有什么改革?
2011-02-01 21:49
pangding
来 自:北京
等 级:
贵宾
威 望:
94
帖 子:6784
专家分:16751
注 册:2008-12-20
第
13
楼
得分:0
应该一直都是只能整形。我觉得老谭在忽悠人。
你的那个在 TC 下试验的代码是什么?发上来看看。
2011-02-01 23:37
njzhangyuhao
等 级:
论坛游民
帖 子:197
专家分:35
注 册:2010-11-20
第
14
楼
得分:0
main()
{
float a=1.0;
switch(a)
{
case 1.0:printf("ss");
}
}
显示正确 但如果把1.0换成1.1就会错误 不知道怎么搞的
2011-02-01 23:47
njzhangyuhao
等 级:
论坛游民
帖 子:197
专家分:35
注 册:2010-11-20
第
15
楼
得分:0
TURBOc2.0环境
2011-02-01 23:47
pangding
来 自:北京
等 级:
贵宾
威 望:
94
帖 子:6784
专家分:16751
注 册:2008-12-20
第
16
楼
得分:0
你自己多试几个例子,总结总结规律呗。
八成就是编译器发现不是整形的就试着瞎转转,以便生成代码。其实是不支持的。
对于硬件来说,比较整形数值和比较浮点数值有很大的区别。虽然从 C 语言上看代码几乎一样,但本质区别很大(想想浮点数的编码方式就不难理解这点了)。标准里有好多限制其实是为了编译器能生成更简洁有效的代码而加的。
TC 比较老,不支持也不报错说一下。这种编译器用多了其实不是很好。
2011-02-02 00:30
wewoor
等 级:
新手上路
帖 子:25
专家分:5
注 册:2010-10-4
第
17
楼
得分:0
回复 楼主 njzhangyuhao
只能是整型。
2011-02-03 15:01
丞相杀手
等 级:
侠之大者
帖 子:203
专家分:462
注 册:2011-1-11
第
18
楼
得分:0
由于switch case 语句中要隐藏着 == 比较,而浮点型数据本身在计算机中并不精确,所以,switch case 接收浮点型数据时,结果不可预测
斗不过疯子,不参与争论。
2011-02-03 20:17
qq312154421
等 级:
论坛游侠
帖 子:124
专家分:120
注 册:2010-6-7
第
19
楼
得分:0
学习了。。。。
勤奋不止,自强不息。
2011-02-03 23:34
pangding
来 自:北京
等 级:
贵宾
威 望:
94
帖 子:6784
专家分:16751
注 册:2008-12-20
第
20
楼
得分:0
以下是引用
丞相杀手
在2011-2-3 20:17:56的发言:
由于switch case 语句中要隐藏着 == 比较,而浮点型数据本身在计算机中并不精确,所以,switch case 接收浮点型数据时,结果不可预测
倒不是因为这个原因。
不过这个无所谓。知道 switch 只能用于整形就行了。
2011-02-04 16:56
22
2/3页
1
2
3
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-331759-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.637470 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved