'a'和“a”有什么区别?

时间:2012-07-01 02:25:03

标签: c++ string char

我正在学习C ++并且有一个我无法找到答案的问题。

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

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

执行以下操作会有区别吗?

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

6 个答案:

答案 0 :(得分:23)

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

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

两个

cout << 'a';

cout << "a";

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

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

(在C中,您没有询问,'a'的类型为int"a"的类型为char[2](无const ))。

答案 1 :(得分:4)

"a"是一个字符数组,恰好只包含一个字符,如果在最后计算\0,则为两个字符。 'a'是一个字符。他们不是一回事。例如:

#include <stdio.h>

void test(char c) {
    printf("Got character %c\n", c);
}

void test(const char* c) {
    printf("Got string %s\n", c);
}

int main() {
    test('c');
    test("c");
}

这将使用两个不同的重载;请参阅http://codepad.org/okl0UcCN了解演示。

答案 2 :(得分:1)

单引号用于包围字符文字。双引号用于包围字符串(字符数组)文字。

许多接口(例如cout <<)都接受。

答案 3 :(得分:0)

单引号'a'char类型的文字。双引号"a"是以char为单位的以空字符结尾的字符串文字。

答案 4 :(得分:0)

  • “a” - &gt;它表示它是一个字符串。在c ++字符串中是一个集合 characters array。
  • 所以字符串以分隔符'\ 0'终止,表示字符串结束。
  • 所以它的大小为2,因为“a”为1字节,“\ 0”为1字节

在'a'的情况下 - >它是单个字符。所以它的大小是1字节。

char str[]="a"; 

char *ptr = "c";

for  'c' -> char c = 'a';

或者我们也可以写

char c = 97;

答案 5 :(得分:-1)

&#39;一个&#39; - 1)字符常数         2)大小 - 1个字符         3)不是Character数组的集合

&#34;&#34; -1)字符串文字         2)大小 - 2个字符         3)Character数组的集合

相关问题