#include<stdio.h>
const int red=0;
const int yellow=1;
const int green=2;
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="nuknown";break;
}
printf("你喜欢的颜色是%s\n",colorName);
return 0;
}
[Warning] deprecated conversion from string constant to “char*” [-Wwrite-strings]
解决方案
5
switch里面 case123吧
20
这句warning是针对你case中 colorName=“red”形式而提示的,目的在于提示不建议将char*指向常字符串。
原因是常字符串为了优化通常村存在符号表中,也就意味着不能修改。
你使用非const的char*指向它,很有可能在后面进行修改,从而引发错误。
解决办法可使用strcpy进行拷贝
原因是常字符串为了优化通常村存在符号表中,也就意味着不能修改。
你使用非const的char*指向它,很有可能在后面进行修改,从而引发错误。
解决办法可使用strcpy进行拷贝
5
printf里面的%和变量的一一对应关系
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方,而且通常编译还不出错。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方,而且通常编译还不出错。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。
20
char *colorName=NULL;
改成
const char *colorName=NULL;
改成
const char *colorName=NULL;