c语言中的switch函数,case后面能跟变量吗?

如果不能,为什么?

不能的,你可以把它看成if...else if...else
switch(a){
case 1:.....
case 2:.....
default:.......
}
可以看成是
if(a==1) ......
else if(a==2).......
else ......

不能
这是规定

  • switch 是另外一种选择结构的语句,用来代替简单的、拥有多个分枝的 if else 语句,基本格式如下:
    switch(表达式){
      case 整数1: 语句1;
      case 整数2: 语句2;
            ...
      case 整数n: 语句n;
      default: 语句n + 1;
    }
    

    对于 switch case 语句的执行过程,如下:
      1)首先,计算 表达式 的值,假设为 $x$;
      2)然后,从第一个 case 开始,比较 $x$ 和 整数1 的值,如果相等,就执行冒号后面的所有语句,也就是从 语句1 一直执行到 语句n + 1,而不管后面的 case 是否匹配成功(这是平时开发的易错点,需要特别注意)。
      3)如果 $x$ 和 整数1 不相等,就跳过冒号后面的 语句1,继续比较第二个 case、第三个 case……,一旦发现和某个 整数 相等了,就会执行后面所有的语句。假设 $x$ 和 整数6 相等,那么就会从 语句6 一直执行到 语句n + 1
      4)如果直到最后一个 整数n 都没有找到相等的值,那么就执行 default 后的 语句n + 1

更多内容,可以参考: