翁恺teacher写的代码,好像有问题


#include <stdio.h>
enum COLOR {RED,YELLOW,GREEN};
int main(int argc, char const *argv[]){
    int color = -1;
    char *colorName = NULL;
    printf("输入你喜欢的颜色的代码:");    
    scanf ("%d", &color);
    switch ( color ) {
        case RED: colorName = " red" ; break;
        case YELLOW: colorName = "yellow" ; break;
        case GREEN:colorName = "green" ; break;
        default: colorName= "unknown" ; break;
    }
    printf("你喜欢的颜色是%s\n", colorName);
    return 0;
}

报错的信息:

C:\Users\zyn\Documents\C Files\我不理解.cpp    In function 'int main(int, const char**)':
9    23    C:\Users\zyn\Documents\C Files\我不理解.cpp    [Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]
10    26    C:\Users\zyn\Documents\C Files\我不理解.cpp    [Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]
11    24    C:\Users\zyn\Documents\C Files\我不理解.cpp    [Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]
12    21    C:\Users\zyn\Documents\C Files\我不理解.cpp    [Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]


运行结果:

img

输入你喜欢的颜色的代码:RED
你喜欢的颜色是unknown

--------------------------------
Process exited after 143 seconds with return value 0
请按任意键继续. . .

img

1、枚举是数字,从0开始依次递增,所以你需要输入数字才可以
2、你定义的color是int类型的没有问题,但是输入的是非int类型,所以color的值还是-1,在switch时就会走default,故最终输出的是unknown。你可以输入0 1 2来测试就可以了