C语言中单引号和双引号的区别

在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]

阅读 4k
2 个回答

双引号“”是字符串,以\0结尾。
单引号''是字符。

char本身只能保存一个字符,所以语句 char a = "A";
你用的编译器虽然通过,但是也报了警告。警告的原因是数据类型需要强制转换,你用编译器跟进去看看,41可能就是字符串"A"的地址。

PS:@任卫 补充内容:41是字符串地址的低位。

前面你的类型是 char,说明是一个字符,C++/C里面操作对象有字符
如果想表示一个字符串的话
用const char * a = "A";

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏