为什么编译:
char ch = '1234'; //no error
Run Code Online (Sandbox Code Playgroud)
但不超过4 char秒:
char ch = '12345'; //error: Too many chars in constant
Run Code Online (Sandbox Code Playgroud)
(是的,我知道' '用于一个char," "用于字符串;我只是在尝试)
这是否与char使用ASCII数字表示的事实有关?
Ste*_*sop 17
C++有一种叫做"多字符文字"的东西.'1234'是一个例子.它们具有类型int,并且实现定义了它们具有的值以及它们可以包含的字符数.
这与字符表示为整数这一事实没有直接关系,但在您的实现中,值'1234'被定义为:
'1' + 256 * '2' + 256 * 256 * '3' + 256 * 256 * 256 * '4'
Run Code Online (Sandbox Code Playgroud)
要么:
'4' + 256 * '3' + 256 * 256 * '2' + 256 * 256 * 256 * '1'
Run Code Online (Sandbox Code Playgroud)
Yu *_*Hao 16
它是一个多字符文字,有一种类型int.
C++11§2.13.2字符文字
字符文字是用单引号括起来的一个或多个字符,如在
’x’字母中,可选地以字母开头L,如L’x’.不以字母开头L的字符文字是普通字符文字,也称为窄字符文字.包含单个c-char的普通字符文字具有char类型,其值等于执行字符集中c-char的编码的数值.包含多个c-char的普通字符文字是多字符文字.多字符文字具有类型int和实现定义的值.