C++是否允许8字节长的多字符文字?

Cha*_*s W 3 c++ character literals

为什么允许这样做:

uint32_t x = 'name';
Run Code Online (Sandbox Code Playgroud)

但这会被截断为32位:

uint64_t x = 'namename';
Run Code Online (Sandbox Code Playgroud)

有没有办法有一个8字节长的多字符文字?

Rei*_*ica 7

是的,只要您的编译器具有8字节int并支持它.

关于多字符文字,C++标准非常简洁.这就是关于此事的所有内容(C++ 14,2.14.3/1):

包含多个c-char的普通字符文字是多字符文字.包含单个c-char的多字符文字或普通字符文字在执行字符集中无法表示,它是有条件支持的,具有类型int,并具有实现定义的值.

(强调我的)

如你所见,几乎所有的标准都说如果支持多字符文字(它们不一定是),它们就是类型int.该值取决于编译器.

  • 所以简短的回答是它以这种方式工作,因为int在他的平台上是32位. (2认同)