【发布时间】:2021-12-23 00:12:06
【问题描述】:
为什么浮点数不适用于 Switch?
【问题讨论】:
-
1.因为语言定义是这样说的。 2. 因为比较浮点数是否完全相等(
switch语句隐含地这样做)通常是一个坏主意。 3. 因为使用浮点变量作为控制变量通常是个坏主意。 -
如果你有一个具体的例子,你想写一段代码,它有一个浮点值上的
switch语句,你可能想问一下。回答的可能性很小,“是的,这行得通,可惜你不能使用switch,你必须使用if/else链来代替。”但我们更有可能提出更好的编写方法。 -
@SteveSummit,这对于小数来说是正确的,但是小整数(最多约 1e6)可以完美地由
float表示,并且它们可以安全地用于比较 -
@tstanisl 确实,这就是为什么我说“经常”而不是“总是”。
-
C 标准规定:“switch 语句的控制表达式应具有整数类型”
标签: c switch-statement conditional-statements