int main()
{
switch(1,2)
{
case 1:printf("1");break;
case 2:printf("2");break;
default: printf("error");break;
}
}
这在c中有效吗?
我以为它不应该,但是当我编译它时,它没有显示任何错误并产生了输出2。
是的,这是有效的,因为在这种情况下,,
是逗号运算符。
引用C11
,第§6.5.17章,逗号运算符,(重点是我的)
逗号运算符的左操作数被评估为void表达式;在它的评估与正确操作数的评估之间存在一个顺序点。然后评估正确的操作数;结果具有其类型和价值。
这(求和)将舍弃左侧的操作数,并使用右侧(side)的值。因此,以上陈述基本上与
switch(2)
为了详细说明,它不使用两个值,就像您可能期望的那样,打开1或2。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句