首页 > 解决方案 > 错误:使用字符数据类型时,案例标签不会减少为整数常量

问题描述

这是我在“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 标签不会减少为整数常量”。

这让我有点好奇我犯了什么样的错误,因为我认为使用常量字符类型作为大小写标签没有错误。是关于我正在使用的编译器版本吗?

标签: ccompiler-errorsswitch-statementsyntax-errorcharacter

解决方案


case 'A': case'B': case "C":

while'A''B'是字符,"C"是字符指针,因此不能使用。

你需要'C'改用。F和同上X


推荐阅读