我正在尝试使用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
答案 0 :(得分:2)
我无法找到相关文档,但它看起来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