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

2,254 阅读1分钟

意义不同

单引号 包起来的字符我们一般认为是int型,虽然看起来是char,但其实是由ASCII码对应的字符,例如:'T'和十进制数84在使用中含义一致。

'a'+1是指'a'的ASCII码+1,也就是'b'

双引号包起来的字符,代表的是一个指向该数组首地址的字符指针。

"a"+1是指指针运算,指针指向数组“a”的结束符'\0'

大小不同

单引号包起来的一个字符就是一个字节大小,两个字符就是两个字节大小

双引号包起来的一个字符就是两个字节大小,两个字符就是三个字节大小... 因为双引号包起来的内容属于字符串,会在字符串末尾添加一个二进制为0的字符’\0’。

char ch[2] = "A";    //此处想保存一个字符串"A",需要两个字节大小的数组

容易出现的问题

  1. 大小不对应
char c = "string";

在这个声明阶段,"string"其实是一个4字节的char *指针,而char类型只有一个字节,大小不同,会发生截断。

  1. 在使用中可以如果判断变量是否为某字符,就应该使用单引号使之自动转化为ASCII码进行判断。

获取ASCII码

此处插入一个ASCII码的获取方式:

char y='X';

printf("%c ",y);   // 取得字符X

printf("%d ",y);   // 取得字符变量的ascii码,十进制数

printf("%x ",y);   // 取得字符变量的ascii码,十六进制数

摘自: blog.csdn.net/qq_15301285…

摘自: blog.csdn.net/Scofield971…