为什么会这样编译:
char ch = '1234'; //no error
但不超过 4char
秒:
char ch = '12345'; //error: Too many chars in constant
(是的,我知道' '
用于一个char
并且" "
用于字符串;我只是在试验)
这是否与char
s 使用 ASCII 数字表示的事实有关?
C++ 有一种叫做“多字符文字”的东西。'1234'
是一个例子。它们具有 type int
,并且由实现定义它们具有什么值以及它们可以包含多少个字符。
这与字符表示为整数这一事实没有直接'1234'
关系,但是在您的实现中,很有可能将值定义为:
'1' + 256 * '2' + 256 * 256 * '3' + 256 * 256 * 256 * '4'
或者:
'4' + 256 * '3' + 256 * 256 * '2' + 256 * 256 * 256 * '1'