为什么输出显示为无符号数
why output is displayed as unsigned number
我正在将无符号数组转换为具有sscanf
函数的整数,但我正在获得无符号数??
int arr[3];
unsigned char* tmp = "1223FFFF2222;
for (int i = 0; i < 3; i++){
sscanf((const char*)tmp, "%4x", &arr[i]);
tmp += 4;
}
std::cout << "X: " << std::dec << arr[1] << " ";
输出X: 65535,它应该是-1
很可能是因为你的整数宽度超过16位。在0x8000-0xffff
范围内的2的补码数只对16位数字为负。
对于更可能的32位(甚至64位)整数(现在),它只是一个很小的正数。
相关文章:
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 将无符号char*转换为std::istream*C++
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- C++中无符号字符溢出
- 使用无符号字符数组有效存储内存
- 如何打印boost多精度128位无符号整数
- C++模板函数,用于比较任何无符号整数和有符号整数
- 在 std::无符号字符的向量处存储 int 的十六进制表示形式
- 获取隐式转换溢出从无符号到已签名的警告
- 如何在保持其值的同时将 c++ 无符号字符变量转换为 char 变量
- 从 std::vector<无符号字符>切片中提取 int?
- 将零附加到数字时,无符号数字会显示不同的结果
- Qt - 在像素操作后显示无符号字符
- 字符* 数组出现"multiple definitions"错误,但无符号字符数组未显示错误
- 为什么Visual Studio没有将无符号值显示为int?
- 为什么无符号字符不能正确显示十六进制值
- 显示无符号字符*和有符号字符*输出的结果是否完全相同
- 在opengl中显示16位无符号整数