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

时间:2015-09-30 14:30:36

标签: c++ character literals

为什么允许这样做:

uint32_t x = 'name';

但这会被截断为32位:

uint64_t x = 'namename';

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

2 个答案:

答案 0 :(得分:7)

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

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

  

这是   包含多个 c-char 的普通字符文字是多字符文字。多字符   文字或包含单个 c-char 的普通字符文字,在执行字符中不可表示   set,有条件支持,类型int ,并且具有实现定义的值。

(强调我的)

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

答案 1 :(得分:0)

如果仅支持4字节多字符文字,则可以使用:

uint64_t x = (((uint64_t)'abcd') << 32) + 'efgh';

但它可能最终会成为2个文字。