为什么c语言的switch语句中的case后面不能加英文字母?

为什么c语言的switch语句中的case后面不能加英文字母?我把%d改成%s或%c都不行。要怎么弄啊?

#include<stdio.h>
int main(){
 char a;
 scanf("%c",&a);
 switch(a){
 case 'a':printf("输出数据 %c ",a);break;
  case 'b':printf("输出数据 %c ",a);break;
   case 'c':printf("输出数据 %c ",a);break;
   default:putchar('\a');
    }
 return 0;}

这是我试过的,可以啊!

你可以复制我的试试看!

看看是不是软件问题吧!

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-26
case 后面必须是整数 或者 ASCII 码表里面的字符。
字母可以写成 case 'A': case 'a': 这样。本回答被提问者采纳
第2个回答  2019-05-08
default
拼写错误
你的while(1)是个无限循环语句,当执行到switch后,如果没有满足case的情况,根本不会执行到default语句,也就是switch不起作用了,b未赋任何值,也就不会输出任何字符,再次循环到程序的起始位置,执行再输入;如果满足case情况,仍可以输出。
第3个回答  2019-01-19
default
拼写错误
你的while(1)是个无限循环语句,当执行到switch后,如果没有满足case的情况,根本不会执行到default语句,也就是switch不起作用了,b未赋任何值,也就不会输出任何字符,再次循环到程序的起始位置,执行再输入;如果满足case情况,仍可以输出。
第4个回答  2013-12-14
java的switch中case的标号只能是int及范围小于int的整数,java7中String也可以。
c的switch中case的标号只能是整数,但是不限制是什么整数。
这些都行:size_t、char、int、int32_t、long、unsigned long long…

%d什么的那是scanf和printf的格式符号,跟switch没关系本回答被网友采纳
相似回答