在C中
void main()
{
char a = 'A';
printf("%d\n",a);
}
输出结果为65,是A在ASCII中的十进制表示。
void main()
{
//这里用了双引号
char a = "A";
printf("%d\n",a);
}
输出结果为41,我很奇怪,问什么不是65?
第二段代码在编译的时候产生了警告:warning: initialization makes integer from pointer without a cast [enabled by default]
双引号“”是字符串,以
\0
结尾。单引号''是字符。
char本身只能保存一个字符,所以语句 char a = "A";
你用的编译器虽然通过,但是也报了警告。警告的原因是数据类型需要强制转换,你用编译器跟进去看看,41可能就是字符串"A"的地址。
PS:@任卫 补充内容:41是字符串地址的低位。