在 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.
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.