我正在学习C++并且有一个我无法找到答案的问题.
char
常量(使用单引号)和字符串常量(带双引号)之间有什么区别?
我的所有搜索结果都与char arrays vs相关std::string
.我之间的差额后'a'
和"a"
.
执行以下操作会有所不同:
cout << "a";
cout << 'a';
Run Code Online (Sandbox Code Playgroud)
Kei*_*son 24
'a'
是一个字符文字.它是类型char
,大多数系统的值为97(字母的ASCII/Latin-1/Unicode编码a
).
"a"
是一个字符串文字.它是类型const char[2]
,并且是指char
带有值'a'
和的2 s 数组'\0'
.在大多数但不是全部的上下文中,引用"a"
将被隐式转换为指向字符串第一个字符的指针.
都
cout << 'a';
Run Code Online (Sandbox Code Playgroud)
和
cout << "a";
Run Code Online (Sandbox Code Playgroud)
碰巧产生相同的输出,但出于不同的原因.第一个打印单个字符值.第二个连续打印字符串的所有字符(终止除外'\0'
) - 恰好是单个字符'a'
.
字符串文字可以任意长,例如"abcdefg"
.字符文字几乎总是只包含一个字符.(你可以有多字符文字,例如'ab'
,但它们的值是实现定义的,它们很少有用.)
(在C中,你没有问过,'a'
是类型int
,"a"
类型char[2]
(不const
)).