我正在创建一个程序,以十六进制和八进制格式打印一个 signed 64 位变量。我在网上搜索了格式说明符,但只找到了 unsigned 64 位整数的结果。
最佳答案
说明符 %o
和 %x
实际上只是为无符号整数值定义的。在有符号输入的情况下,如果你想显示一个有符号的值,如 -234
以及十六进制的“符号”,例如-ea
,您必须单独处理带符号的值。
否则,如果您希望负值显示为正确的无符号转换(即二进制补码表示),只需将其转换为 unsigned
:
int main() {
int input = -234;
if (input < 0) {
printf("-%x\n", (unsigned)(-input));
} else {
printf("%x\n", (unsigned)input);
}
printf("%x\n", (unsigned)input);
}
输出:
-ea
ffffff16
关于c - 以十六进制和八进制打印一个带符号的 64 位整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65555783/