我可以将多个值传递给用逗号分隔不同值的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");
}
答案 0 :(得分:5)
逗号运算符计算所有表达式并返回最右边的表达式的值。 (你在switch
中使用它没有任何区别。)
您的示例与switch (m*2)
完全相同,但如果前面的任何一个表达式都有副作用,那么在执行switch
语句之前会应用这些副作用。