0. 概述
我们在写c语言很多时候会用到单引号和双引号,但实际上c的单引号和双引号代表的意义以及他们的区别是截然不同的,下面的内容是我读c语言陷阱和缺陷所了解的内容
1. c语言的单引号和双引号
c语言的单引号引起的字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值。因此采用ASCII字符集的编译器而言,'a'
的含义与97严格一致
char a = 'a';
printf("%d", a);
>>>>>>>>>>>>
97
而用双引号引起的字符串实际上是指向无名数组起始字符的指针,该数组被双引号之间的字符以及一个额外的二进制值为零的字符'\0'
初始化,例如如下a
和b
这两个变量其实是等效的
char* a = "123456";
char b[] = {'1', '2', '3', '4', '5', '6', '\0'};
而我们常用的'\n'
换行符其实是两个字符(一个\
+n
),是不可以用单引号来引用的
'\n'
×
"\n"
√
2. python的双引号和单引号
与c语言截然不同的是python的单引号和双引号其实是没有区别的,我们来看下面代码
a = '11111'
b = "11111"
print(a == b)
>>>>>>>>>
True
引号的内容只要一样,输出的布尔值就是True
唯一的用处可能是输出字符串里面本身就用引号的内容
a = '111"11"'
b = "111'11'"
print(a, b)
>>>>>>>>>>>>>>>
111"11" 111'11'
3. 总结
- c语言中用单引号括起来的一个字符代表一个整数,而用双引号括起来的字符代表一个指针
- python中单引号和双引号括起来的都代表一个字符串几乎没什么区别