问答详情
源自:2-8 自动类型转换

为什么要用单引号a输出是97双引号a是64


#include <stdio.h>

int main()

{

    char c = "a";

    int n =    c;     //将c赋值给n

    float f =    c;   //将c赋值给f

    double d =     c; //将c赋值给d

    printf("%d\n",n);

    printf("%f\n",f);

    printf("%lf\n",d);

    return 0;    

}


提问者:叉叉方方 2017-08-08 11:33

个回答

  • treehuang
    2017-08-08 12:30:04
    已采纳

    单引号括起来为字符,对应值为a的ASCII值,双引号括起来为字符串,char c = "a";这样是不合法的,通常我们是这样来定义的,char *c = "a";或者开一个buffer来存放字符串,char buff[2] = "a";

    再补充一点,C语言中,字符串并不是一种数据类型,准确来讲它是数组,字符数组,结束符为 \0,比如,“abc”,它的长度是多大呢,答案是4个字节,它在内存是这么存的:{‘a’,'b', 'c', '\0'},所以是4个字节

  • 慕斯4785361
    2017-08-08 12:30:55

    单引号代表的是一个字符,也就是输出的字符a的ASCALL码,双引号中代表a是一个字符串,这个输出应该是有其特定的计算方法或者乱码,至少在我的机子上运行的是44

  • 慕田峪4876688
    2017-08-08 12:18:15

    用双引号表示字符串,字符串包含两个字符,a和\0,所以输出不一样