c - 错误:使用字符数据类型时,案例标签不会减少为整数常量
问题描述
这是我在“C Programming: A Modern Approach(2nd version)”一书中尝试做的第 7 章:基本类型的项目 4。问题看起来像这样: 问题描述在这里
#include<stdio.h>
#include<ctype.h>
int main(){
char apb;
int num;
printf("Enter phone number:");
do{
apb = getchar();
apb = toupper(apb);
while(apb != ' ' || apb != '\n'){
switch(apb){
case 'A': case'B': case "C":
printf("2");break;
case 'D': case'E': case "F":
printf("3");break;
...
case 'Y': case'W': case "X":
printf("9");break;
default:printf("Error:please try again\n");
}
}
}while{apb >='A' && apb <='Z'};
return 0;
}
当我尝试编译代码时,编译器为我的案例标签的每个部分都抛出了一个错误,说:
“[Error]case 标签不会减少为整数常量”。
这让我有点好奇我犯了什么样的错误,因为我认为使用常量字符类型作为大小写标签没有错误。是关于我正在使用的编译器版本吗?
解决方案
case 'A': case'B': case "C":
while'A'
和'B'
是字符,"C"
是字符指针,因此不能使用。
你需要'C'
改用。F
和同上X
。