为什么我们不能在 switch 语句中使用关系表达式?

Why exactly can't we use relational expressions in a switch statement?

因为 C 中没有 true false 布尔类型,表达式 x == y 的计算结果是什么,什么时候为真,什么时候为假?

如果它的计算结果分别为 1 和 0,它们是整数,为什么我们不能将 cases 这样的表达式用于 switch 语句?

这背后的正确原因是:

  1. case 只允许整数表达式或计算结果为整数的表达式,而 x == y 不会计算为整数(我不知道如何计算)?或
  2. 如果 switch 允许像 case 这样的表达式,那么多个 case 最终将有相同的值的可能性很大,即每当 x==y,我们将得到 1,因此多个这样的 case 将被评估到 1,或 0;这在 switch 语句中是不允许的。

原因不是x==y类型,而是case取常数的事实。 x==y 通常不是常数。