为什么输出显示为无符号数

why output is displayed as unsigned number

本文关键字:无符号 显示 输出 为什么      更新时间:2023-10-16

我正在将无符号数组转换为具有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位)整数(现在),它只是一个很小的正数。