18

为什么会这样编译:

char ch = '1234'; //no error

但不超过 4char秒:

char ch = '12345'; //error: Too many chars in constant

(是的,我知道' '用于一个char并且" "用于字符串;我只是在试验)

这是否与chars 使用 ASCII 数字表示的事实有关?

4

2 回答 2

17

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'
于 2013-10-16T02:12:57.233 回答
16
于 2013-10-16T02:15:27.617 回答