在C或C ++编程中何时应使用单引号和双引号?
在C或C ++编程中何时应使用单引号和双引号?
Answers:
在C和C ++中,单引号标识单个字符,而双引号创建字符串文字。'a'
是一个字符文字,而"a"
一个字符串文字包含一个'a'
和一个空终止符(即2个字符的数组)。
在C ++中,字符文字的类型为char
,但请注意,在C中,字符文字的类型为int
,即sizeof 'a'
在整数为32位(而CHAR_BIT为8)的体系结构中为4,而sizeof(char)
在各处均为1。
一些编译器还实现了扩展,该扩展允许多字符常量。C99标准说:
6.4.4.4p10:“整数字符常量的值由实现定义,该常量包含多个字符(例如'ab'),或者包含不映射到单字节执行字符的字符或转义序列。 ”
例如,可能看起来像这样:
const uint32_t png_ihdr = 'IHDR';
所得的常数(在实现此功能的GCC中)具有通过获取每个字符并将其向上移位而获得的值,以便“ I”以32位值的最高有效位结尾。显然,如果要编写独立于平台的代码,则不应依赖于此。
单引号是字符(char
),双引号是以null结尾的字符串(char *
)。
char c = 'x';
char *s = "Hello World";
const char *
。
双引号用于字符串文字,例如:
char str[] = "Hello world";
单引号用于单字符文字,例如:
char c = 'x';
编辑正如大卫在另一个答案中所述,字符文字的类型为int
。
char str[] = {'H','e','l','l','o'};
,并且str
将不会有一个空终止。
str
它不是字符串(至少不是C样式的字符串,它定义为NTBS)。
char[]
(人们通常将其称为“字符串”)都是以空值结尾的。
"hello" /*seamlessly connected to*/ "world"
。对于注释多行的消息,这可能很有意义。
单引号用于字符,而双引号用于字符串。
printf("%c \n",'a');
printf("%s","Hello World");
你好世界
如果反之亦然,则使用单引号表示字符串,使用双引号表示字符。在这里,这将是结果;
printf("%c \n","a");
printf("%s",'Hello World');
第一行。您将获得垃圾值或意外值。或者您可能会得到如下输出。
而第二条语句。您什么也看不到。还有一件事。在此之后,如果您还有其他声明。他们也不会给您任何结果。
注意:PHP语言使您可以灵活地轻松使用单引号和双引号。