无法将char数组初始化为c中的变量
Can't initialize char array to a variable in c
使用Turbo c++初始化char变量数组时出现如下错误代码
int gd=DETECT,gm,i,d=0,x,y;
char s[12]={"3","4","5","6","7","8","9","10","11","12","1","2","[=10=]"};
initgraph(&gd,&gm,"..\BGI");
但是当用于初始化 s[12][3]
时,初始化列表工作正常!
"3"
和'3'
有区别。
"3"
是字符串文字
'3'
是字符常量(吹毛求疵:整型字符常量)
此处,要初始化 char
类型的数组,您似乎需要(用大括号括起来的)字符常量列表,而不是字符串。
but while using s[12][3] works fine
好吧,你正在初始化 数组。
故事的寓意:如有疑问,请检查数据类型!!
您正在尝试存储 char
,而不是字符串,那么为什么要使用双引号?
"a"
是一个字符串,'a'
是一个字符。
你真正想要存储的是字符串,为此你需要一个二维数组,如下所示:
s[12][3] = {"3","4","5","6","7","8","9","10","11","12","1","2"};
你不能将10表示为一个字符,我的意思是'10'
不存在。就数字而言,单个字符是从 0 到 9。因此,您需要一个表示 10 的字符串,例如 "10"
.
现在,您需要数组的第二个维度为 3,因为字符串 "10"
(例如)是一个以 null 结尾的字符串,因此它的实际内容有 2 个字符,再加上 1 个字符空终止符,给出 3.
PS: Turbo-C++ 是一个古老的编译器。升级到 GCC 或其他任何东西,真的。
您需要更改:
char s[12]={"3","4","5","6","7","8","9","10","11","12","1","2","[=10=]"};
至
char s[13]={'3','4','5','6','7','8','9','10','11','12','1','2','[=11=]'};
因为 char 数组元素应该是 char 文字而不是字符串文字
使用Turbo c++初始化char变量数组时出现如下错误代码
int gd=DETECT,gm,i,d=0,x,y;
char s[12]={"3","4","5","6","7","8","9","10","11","12","1","2","[=10=]"};
initgraph(&gd,&gm,"..\BGI");
但是当用于初始化 s[12][3]
时,初始化列表工作正常!
"3"
和'3'
有区别。
"3"
是字符串文字'3'
是字符常量(吹毛求疵:整型字符常量)
此处,要初始化 char
类型的数组,您似乎需要(用大括号括起来的)字符常量列表,而不是字符串。
but while using s[12][3] works fine
好吧,你正在初始化 数组。
故事的寓意:如有疑问,请检查数据类型!!
您正在尝试存储 char
,而不是字符串,那么为什么要使用双引号?
"a"
是一个字符串,'a'
是一个字符。
你真正想要存储的是字符串,为此你需要一个二维数组,如下所示:
s[12][3] = {"3","4","5","6","7","8","9","10","11","12","1","2"};
你不能将10表示为一个字符,我的意思是'10'
不存在。就数字而言,单个字符是从 0 到 9。因此,您需要一个表示 10 的字符串,例如 "10"
.
现在,您需要数组的第二个维度为 3,因为字符串 "10"
(例如)是一个以 null 结尾的字符串,因此它的实际内容有 2 个字符,再加上 1 个字符空终止符,给出 3.
PS: Turbo-C++ 是一个古老的编译器。升级到 GCC 或其他任何东西,真的。
您需要更改:
char s[12]={"3","4","5","6","7","8","9","10","11","12","1","2","[=10=]"};
至
char s[13]={'3','4','5','6','7','8','9','10','11','12','1','2','[=11=]'};
因为 char 数组元素应该是 char 文字而不是字符串文字