'a'和"a"有什么区别?

What is the difference between 'a' and "a"?

本文关键字:区别 什么      更新时间:2023-10-16

我正在学习C++,但有一个我找不到答案的问题。

char常量(使用单引号)和字符串常量(使用双引号)有什么区别?

我所有的搜索结果都与字符数组与std::string有关。我追求'a'"a"之间的区别.

执行以下操作是否有区别:

cout << "a";
cout << 'a';

'a'是一个字符文字。它是char类型,在大多数系统上的值为97(字母a的ASCII/Latin-1/Unicode编码)。

"a" 是一个字符串文本。 它属于 const char[2] 类型,指的是一个 2 char s 的数组,值为 'a'''。在大多数(但不是全部)上下文中,对 "a" 的引用将隐式转换为指向字符串第一个字符的指针。

cout << 'a';

cout << "a";

碰巧产生相同的输出,但出于不同的原因。第一个打印单个字符值。第二个连续打印字符串的所有字符(终止''除外)——恰好是单个字符'a'

字符串文本可以是任意长的,例如 "abcdefg" 。字符文本几乎总是只包含一个字符。(您可以使用多字符文本,例如 'ab' ,但它们的值是实现定义的,它们很少有用。

(在 C 中,您没有询问,'a' 属于 int 型,"a" 属于 char[2] 型(没有const ))。

"a"是一个

字符数组,恰好只包含一个字符,或者如果算上最后的,则包含两个字符。 'a'是一个角色。它们不是一回事。例如:

#include <stdio.h>
void test(char c) {
    printf("Got character %cn", c);
}
void test(const char* c) {
    printf("Got string %sn", c);
}
int main() {
    test('c');
    test("c");
}

这将使用两种不同的重载;有关演示,请参阅 http://codepad.org/okl0UcCN。

单引号用于将字符文本括起来。 双引号用于将字符串(字符数组)文本括起来。

许多接口,例如 cout << ,接受其中任何一个。

单引号'a'char 类型的文字。双引号"a"是以 null 结尾的字符串文本 char s。

  • "a" -> 它表示它是一个字符串。 在 C++ 中,字符串是字符数组。
  • 所以字符串由分隔符"\0"终止,它表示字符串的结尾。
  • 所以它的大小将是 2,因为 1 字节表示"a",1 字节表示"\0"

其中,在"a"->的情况下,它是单个字符。 所以它的大小将是 1 字节。

char str[]="a"; 

char *ptr = "c";
for  'c' -> char c = 'a';

或者我们也可以写

char c = 97;

'a' - 1) 字符常量 2) 大小 - 1 个字符 3) 不是字符数组的集合

"a" -1) 字符串 2) 大小 - 2 个字符 3) 字符数组的集合