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

问题描述 投票:3回答:2

为什么允许这样做:

uint32_t x = 'name';

但这会被截断为32位:

uint64_t x = 'namename';

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

c++ character literals
2个回答
7
投票

是的,只要你的编译器有8字节的ints并支持它。

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

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

(强调我的)

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


0
投票

如果只支持4个字节的多字符文字,您可以使用:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.