错误:使用字符数据类型时,大小写标签不能减少为整数常量

问题描述 投票:0回答:1

这是我在《 C编程:一种现代方法(第二版)》一书中试图做的第7章:基本类型的项目4。问题看起来像这样:Question description here

#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; 
}

当我尝试编译代码时,对于案例标签的每个部分,编译器抛出错误都说:

“ [错误]大小写标签没有减少为整数常量。]

这让我有点好奇,因为我发现使用常量字符类型作为大小写标签时没有错误,所以我犯了什么样的错误。是否与我使用的编译器版本有关?

c compiler-errors switch-statement syntax-error character
1个回答
2
投票
case 'A': case'B': case "C":

虽然'A''B'是字符,"C"是字符指针

© www.soinside.com 2019 - 2024. All rights reserved.