我正在用C语言编写一个程序,其中包含switch语句,我想知道编译器是否会接受这样的语句:
我在网上找不到任何使用带有
case !('a'):
我在网上找不到任何使用带有
!
的switch语句的程序。case !('a'):
!
的switch语句的程序。你真的尝试过了吗?
好的,我试过了(在Mac OS X上使用gcc)。
!是逻辑非运算符,而 !(x) 对于 x=0 时返回1,对于其他值则返回0。'a'
是一个在编译时就已知其值的常量,因此编译器将 !('a')
计算为0。所以结果为
case !('a'):
等同于
case 0 :
它甚至不会生成编译器错误,并且可以正常运行。
我想你不想这样做,而是想要一个除了'a'之外所有值的情况,而不是单个值0。抱歉但是switch-case语句不能这样工作。紧跟case关键字的表达式必须是编译器已知的值。
!
和!=
:) - Miguel不好意思,不能以你期望的方式进行(否定整个逻辑表达式而不是其中一个组成部分)。但是你可以使用default
子句来匹配未被case
匹配的任何内容。
if
语句。 - Cody Gray