'a'
is a character literal. It's of type char
, with the value 97 on most systems (the ASCII/Latin-1/Unicode encoding for the letter a
).
"a"
is a string literal. It's of type const char[2]
, and refers to an array of 2 char
s with values 'a'
and ''
. In most, but not all, contexts, a reference to "a"
will be implicitly converted to a pointer to the first character of the string.
Both
cout << 'a';
and
cout << "a";
happen to produce the same output, but for different reasons. The first prints a single character value. The second successively prints all the characters of the string (except for the terminating ''
) -- which happens to be the single character 'a'
.
String literals can be arbitrarily long, such as "abcdefg"
. Character literals almost always contain just a single character. (You can have multicharacter literals, such as 'ab'
, but their values are implementation-defined and they're very rarely useful.)
(In C, which you didn't ask about, 'a'
is of type int
, and "a"
is of type char[2]
(no const
)).
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…