传递多个值以切换用逗号分隔值

时间:2013-08-18 19:19:31

标签: c switch-statement

我可以将多个值传递给用逗号分隔不同值的switch case语句吗?表达式会评估什么?如果没有错误发生,编译器会评估交换机的多个值中的哪一个?请记住逗号运算符的低优先级?比方说,我按如下方式编写代码:

int m=10;
switch(m, m*2)
{
     case 10: printf("\n case 10");
     case 20: printf("\n case 20");
     case 30: printf("\n case 30");
     default: printf("\n no case");
 }

1 个答案:

答案 0 :(得分:5)

逗号运算符计算所有表达式并返回最右边的表达式的值。 (你在switch中使用它没有任何区别。)

您的示例与switch (m*2)完全相同,但如果前面的任何一个表达式都有副作用,那么在执行switch语句之前会应用这些副作用。