c++ - 为什么输出显示为无符号数

标签 c++

我正在使用 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] << " ";

OUTPUT X: 65535 , 应该是-1

最佳答案

很可能是因为您的整数超过 16 位宽。 0x8000-0xffff 范围内的二进制补码对于 16 位数字只会是负数。

对于 32 位(甚至 64 位)整数的更可能情况(现在),它只是一个很小的正数。

关于c++ - 为什么输出显示为无符号数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33081427/

相关文章:

c++ - 用于随机访问和循环元素的最佳数据结构(C++)

c++ - [C++]如何使用std::stack来处理文件/目录层级?

c++ - 具有高维标签的机器学习代码 dlib

c++ - 将 QT 用于 GUI c++

c++ - 带有位置通知的音频流

c++ - 将函数指针实现替换为 std::function 以在 PlayFab SDK 中使用 lambda

用于通信的 C++ 对象到 XML

c++ - 指针输出

c++ - 如何在类中创建和使用指向未知数量结构数组的指针?

c++ - 将 C++ 中的运算符 == 转换为 Objective-C