【发布时间】:2014-12-23 04:48:02
【问题描述】:
在 C 和 C++ 中,规则是相同的。在 C 语言中,
[§6.4.4.4]/2整数字符常量是一个或 更多用单引号括起来的多字节字符,如'x'。
在 C++ 中,
[§2.14.3]/1字符文字是包含一个或多个字符 在单引号中,如'x',前面可选地 字母u、U或L,如u'y'、U'z'或L'x', 分别。
关键词是“一个或多个”。相反,字符串文字可以为空,"",可能是因为它由空终止字符组成。在 C 中,这会导致 char 的尴尬初始化。要么让它保持未初始化状态,要么使用像0 或'\0' 这样的无用值。
char garbage;
char useless = 0;
char useless2 = '\0';
在 C++ 中,如果您希望字符串为空,则必须使用字符串文字而不是字符文字。
(somecondition ? ' ' : '') // error
(somecondition ? " " : "") // necessary
为什么会这样?我假设 C++ 的原因是继承自 C。
【问题讨论】: