由于C中没有true
false
布尔类型,因此表达式x == y
在为true和false时的求值结果是什么?
如果它的计算结果分别为1和0,这两个值都是整数,为什么我们不能对switch
语句使用case
s这样的表达式呢?
这背后的正确原因是:
- case只允许整数表达式或计算为整数的表达式,而x==y不会计算为整数(我不知道如何计算(?或
- 如果switch允许这样的表达式作为case,那么多个case很有可能最终具有相同的值,即无论何时
x==y
,我们都会得到1,因此多个这样的case的值将为1或0;这在switch语句中是不允许的
原因不是x==y
的类型,而是case
取常数。CCD_ 9通常不是常数。