在C和C++中,单引号标识单个字符,而双引号创建字符串文本。 'a'
是单个a字符文本,而“a”
是包含'a'
和空终止符(即2字符数组)的字符串文本。
在C++中,字符文本的类型是char
,但请注意,在C中,字符文本的类型是int
,也就是说,在int为32位(且CHAR_BIT为8)的体系结构中,sizeof'a'
是4,而sizeof(char)
在任何地方都是1。
有些编译器还实现了一个扩展,允许使用多字符常量。 C99标准规定:
6.4.4.4 p10:“包含一个以上字符(如'ab')的整数字符常量的值,或包含未映射到单字节执行字符的字符或转义序列的整数字符常量的值,由实现定义。”
例如,这可以是这样的:
const uint32_t png_ihdr = 'IHDR';
得到的常量(GCC中,它实现了这一点)的值是通过取每个字符并将其上移得到的,这样,“i”就以32位值的最高有效位结束。 显然,如果您正在编写与平台无关的代码,则不应该依赖于此。
单引号是字符(char
),双引号是以空结尾的字符串(char*
)。
char c = 'x';
char *s = "Hello World";