c++是否允许8字节长的多字符字面量?
Does C++ allow 8 byte long multi-character literals?
为什么允许:
uint32_t x = 'name';
但是它被截断为32位:
uint64_t x = 'namename';
是否有办法有一个8字节长的多字符文字?
可以,只要你的编译器有8字节的int
并支持它。
c++标准在多字符字面量方面非常简洁。这就是关于这个问题(c++ 14,2.14.3/1)的全部内容:
一个包含多个c-char的普通字符字面量是一个多字符字面量。多字符字面量,或包含单个c-char在执行字符中不可表示的普通字符字面量类型为
int
,并且有一个实现定义的值。
(强调我的)
正如你所看到的,几乎所有的标准都说,如果支持多字符字面量(它们不必是),它们的类型是int
。该值由编译器决定
如果只支持4字节多字符文字,则可以使用:
uint64_t x = (((uint64_t)'abcd') << 32) + 'efgh';
但是最后可能会变成两个字面值
相关文章:
- 如何检查一个字符是否与字符数组中的另一个字符匹配?
- 如何检查字符串中的最后一个字符是否是某个字符并将其从字符串中删除?(C++)
- 常量字符*是否有任何例外?
- 拆分字符串输入并查找字符是否有效
- CPP 中的 ++ 运算符对字符是否有任何重载?
- 验证字符是否小于字母 c++ 中的指定字母
- 字符串中的重复字符是否可以在 O(n) 中识别和量化
- 错误 ~ 检查字符是否为小写字母
- C++ 使用 || 检查字符是否不在字符串中不工作
- 如何检查2D阵列中的字符是否出现多次?C
- 将短字母转换为字符是否合法
- 比较两个字符*是否相等
- 如何检查字符是否是某个字母表中的字母
- 检查字符是否等于 C++ 中的
- 如何检查字符是否在范围内
- Strchr不起作用,或者我需要一个替代方案来检查给定字符串中的任何字符是否是另一个字符串的一部分
- C++如何确定字符是否是单词中的第一个字符
- 在VC ++浮点数据类型值中,如何检查字符串或特殊字符是否混合
- 如何检查字符串中的字符是否为字符串
- 字符 * 是否有等效的 _mm_loadu_ps