为什么我们不能在 switch 语句中使用关系表达式?
Why exactly can't we use relational expressions in a switch statement?
因为 C 中没有 true
false
布尔类型,表达式 x == y
的计算结果是什么,什么时候为真,什么时候为假?
如果它的计算结果分别为 1 和 0,它们是整数,为什么我们不能将 case
s 这样的表达式用于 switch
语句?
这背后的正确原因是:
- case 只允许整数表达式或计算结果为整数的表达式,而 x == y 不会计算为整数(我不知道如何计算)?或
- 如果 switch 允许像 case 这样的表达式,那么多个 case 最终将有相同的值的可能性很大,即每当
x==y
,我们将得到 1,因此多个这样的 case 将被评估到 1,或 0;这在 switch 语句中是不允许的。
原因不是x==y
的类型,而是case
取常数的事实。 x==y
通常不是常数。
因为 C 中没有 true
false
布尔类型,表达式 x == y
的计算结果是什么,什么时候为真,什么时候为假?
如果它的计算结果分别为 1 和 0,它们是整数,为什么我们不能将 case
s 这样的表达式用于 switch
语句?
这背后的正确原因是:
- case 只允许整数表达式或计算结果为整数的表达式,而 x == y 不会计算为整数(我不知道如何计算)?或
- 如果 switch 允许像 case 这样的表达式,那么多个 case 最终将有相同的值的可能性很大,即每当
x==y
,我们将得到 1,因此多个这样的 case 将被评估到 1,或 0;这在 switch 语句中是不允许的。
原因不是x==y
的类型,而是case
取常数的事实。 x==y
通常不是常数。