在 C 或 C++ 编程中何时应该使用单引号和双引号?
在 C 和 C++ 中,单引号标识单个字符,而双引号创建字符串文字。 'a'
是单个字符文字,而 "a"
是包含 'a'
和空终止符的字符串文字(即 2 字符数组)。
在 C++ 中,字符文字的类型是 char
,但请注意,在 C 中,字符文字的类型是 int
,即 sizeof 'a'
在 int 为 32 位的体系结构中为 4(而 CHAR_BIT 为 8) , 而 sizeof(char)
处处为 1。
一些编译器还实现了允许多字符常量的扩展。 C99 标准说:
6.4.4.4p10:“包含多个字符(例如,'ab')或包含不映射到单字节执行字符的字符或转义序列的整数字符常量的值是实现定义的。 "
这可能看起来像这样,例如:
const uint32_t png_ihdr = 'IHDR';
生成的常量(在 GCC 中实现了这个)具有通过获取每个字符并将其向上移动获得的值,因此“I”最终位于 32 位值的最高有效位中。显然,如果您正在编写独立于平台的代码,则不应该依赖它。
单引号是字符 (char
),双引号是空终止字符串 (char *
)。
char c = 'x';
char *s = "Hello World";
const char *
。
char *
,而不是 const char *
。
'x'是一个整数,表示机器字符集中字母x的数值
"x" 是一个字符数组,两个字符长,由 'x' 后跟 '\0' 组成
我正在寻找类似的东西: int cc = 'cc';碰巧它基本上是按字节复制到整数。因此,查看它的方法是将基本上是 2 个 c 的“cc”复制到整数 cc 的低 2 个字节。如果您正在寻找琐事,那么
printf("%d %d", 'c', 'cc'); would give:
99 25443
那是因为 25443 = 99 + 256*99
所以'cc'是一个多字符常量而不是字符串。
干杯
25443 = 99 + 256*99
为什么是 256*99?
单引号用于单个字符。双引号用于字符串(字符数组)。如果愿意,您可以使用单引号一次一个字符地构建一个字符串。
char myChar = 'A';
char myString[] = "Hello Mum";
char myOtherString[] = { 'H','e','l','l','o','\0' };
单引号用于字符;双引号用于字符串。
在 C 中,单引号(例如 'a'
)表示字符常量,而 "a"
是一个字符数组,总是以 \0
字符结尾
双引号用于字符串文字,例如:
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");
输出
a
Hello World
如果您在反之亦然的情况下使用这些,并对字符串使用单引号,对字符使用双引号,结果如下:
printf("%c \n","a");
printf("%s",'Hello World');
输出 :
对于第一行。你会得到一个垃圾值或意外值,或者你可能会得到这样的输出:
�
而对于第二个语句,您什么也看不到。还有一件事,如果你在这之后有更多的陈述,他们也不会给你任何结果。
注意:PHP 语言使您可以灵活地轻松使用单引号和双引号。
使用带有单字符的单引号作为:
char ch = 'a';
这里 'a'
是一个 char 常量,等于 char a 的 ASCII
值。
将双引号与字符串一起使用:
char str[] = "foo";
这里 "foo"
是一个字符串文字。
可以使用 "a"
,但不能使用 'foo'
单引号表示字符,双引号表示字符串。
在 Java 中也是如此。
虽然我确定这不能回答原始提问者的问题,但如果你最终在这里寻找像我一样的文字整数中的单引号......
C++14 添加了添加 single quotes ('
) in the middle of number literals 以向数字添加一些视觉分组的功能。
constexpr int oneBillion = 1'000'000'000;
constexpr int binary = 0b1010'0101;
constexpr int hex = 0x12'34'5678;
constexpr double pi = 3.1415926535'8979323846'2643383279'5028841971'6939937510;
在 C 和 C++ 中,单引号称为字符 ('a'),而双引号称为字符串 ("Hello")。不同之处在于,一个字符可以存储任何内容,但只能存储一个字母/数字等。字符串可以存储任何内容。但也要记住'1'和1之间是有区别的。如果你输入cout<<'1'<
这次第一行是 48。当你将一个字符转换为 int 时,它会转换为它的 ascii,而 '1' 的 ascii 是 48。同样,如果你这样做:
cout<<int('1')<<endl<<int(1);
string s="Hi";
s+=48; //This will add "1" to the string
s+="1"; This will also add "1" to the string