在 c 中,switch 语句可以有 2 个参数吗?

In c, can a switch statement have 2 arguments?

int main()
{
   switch(1,2)
   {
      case 1:printf("1");break;
      case 2:printf("2");break;
      default: printf("error");break;
   }
}

这在 c 中有效吗?

我认为不应该,但是当我编译它时,它没有显示错误并产生输出 2。

是的,这是有效,因为在这种情况下,,comma operator

引用 C11,章节 §6.5.17,逗号运算符,(强调我的

The left operand of a comma operator is evaluated as a void expression; there is a sequence point between its evaluation and that of the right operand. Then the right operand is evaluated; the result has its type and value.

这(计算并)丢弃左操作数并使用右()的值。所以,上面的语句和

基本一样
switch(2)

详细说明一下,它使用两个值,正如您可能预料的那样,打开1 或 2.