我正在尝试使用gdb
来做一些数学运算。看看这两个转换
gdb$ p/x -8
$8 = 0xfffffff8
gdb$ p/d 0xfffffff8
$9 = 4294967288
为什么在第二种情况下 gdb
不返回 -8
而不是数字的无符号值?
事实上,p/d
和 p/u
gdb$ p/u 0xfffffff8
$10 = 4294967288
最佳答案
我找不到这方面的文档,但看起来 gdb 中整数值的默认类型是 64 位有符号整数。看这个:
(gdb) p/d 0xfffffffffffffff8
$7 = -8
因此它将 0xfffffff8 解释为 (int64_t) 0x00000000fffffff8,这是一个正值。
您正在寻找这个:
(gdb) p/d (int)0xfffffff8
$9 = -8
(gdb) p/u (int)0xfffffff8
$10 = 4294967288
关于GDB 不以有符号十进制打印输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37120303/