是有符号的十六进制文字
Are signed hexdecimal literals possible?
我有一个位掩码数组,这个想法是使用它们来清除指定数量的整数的最低有效位,该整数被用作一组标志。定义如下:
int clearLow[10]=
{
0xffffffff, 0xfffffffe, 0xfffffffc, 0xfffffff8, 0xfffffff0, 0xffffffe0, 0xffffffc0, 0xffffff80, 0xffffff00, 0xfffffe00
};
我最近切换到使用gcc 4.8,我发现这个数组开始抛出警告,
warning: narrowing conversion of ‘4294967295u’ from ‘unsigned int’ to ‘int’ inside { } is ill-formed in C++11
etc
etc
显然,我的十六进制文字被视为unsigned int
s,修复很容易,老实说,我不在乎这个数组是int
还是unsigned int
,它只需要在每个单元格中设置适当的位,但我的问题是:
是否有办法在十六进制中设置字面量,为了简单地设置位,而不让编译器认为它们是无符号的?
您描述您只想将这些值用作位操作的操作数。在这种情况下,总是使用无符号数据类型。
看起来您只是想要一个unsigned int
数组用于您的位掩码:
const unsigned clearLow[] = {
0xffffffff, 0xfffffffe, 0xfffffffc, 0xfffffff8, 0xfffffff0, 0xffffffe0, 0xffffffc0, 0xffffff80, 0xffffff00, 0xfffffe00
};
相关文章:
- 如何在openssl-ecc中获取十六进制格式的私钥
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 通过错误处理,在C++中可靠地获得用户十六进制输入
- 为什么mpfr_printf与十六进制浮点(%a转换说明符)的printf不同
- 在 std::无符号字符的向量处存储 int 的十六进制表示形式
- 指向存储在字符串 c++ 中的十六进制
- 读取文件中所有可能的十六进制 16 字节序列并打印每个序列
- C ++如何使用UTF8十六进制代码打印UTF8符号?
- C++17 十六进制浮点文字单精度后缀冲突?
- fprintf:打印文字十六进制字符串
- 如何使用C预处理器生成可变大小(取决于操作系统)的十六进制文字
- 十六进制浮点文字
- 为什么此输出看起来不确定?(是十六进制文字的冲刺、printf 还是语法?
- 如何将二进制十六进制文字输入 std::istream
- 十六进制文字的wsign -conversion警告
- 在C++中,用十六进制或八进制表示的整型文字的默认类型是什么
- 是有符号的十六进制文字