【发布时间】:2013-01-14 10:21:32
【问题描述】:
Java,c++,c,c# 等语言允许 integral 类型或在 switch-case 语句中计算为整数类型的表达式。[string 文字和其他一些类型是在某些语言中允许]
为什么我们只需要使用integral 类型或有限数量的类型而不是double、float 之类的类型?是因为某种优化还是仅仅为了简单?
【问题讨论】:
-
C# 不是这种情况 (heh) - 它允许 bool、char、string、integral、enum 或相应的可空类型。 (所以...我猜
string是那里唯一真正出色的人。) -
这不正确。例如,C# 允许字符串。字符串不是整数类型。
-
Java 7 还允许在 switch/case 中使用字符串。
-
switch-case with double 表达式将等同于只执行
default部分,因为舍入错误。那么为什么要浪费键盘输入开关/外壳呢? -
@TadeuszKopec:它不会是等价的——双精度值比较相等是可能,所以默认值不会必然采取。但就像你说的,浮点类型的相等比较可能会被舍入错误破坏。
标签: c# java c++ switch-statement