GDB不';t以有符号十进制打印输出

GDB不';t以有符号十进制打印输出,gdb,Gdb,我正试着用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 0xFFFFFFFFFFF8 $7=-8 因此它将0xFFFFF

我正试着用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 0xFFFFFFFFFFF8
$7=-8

因此它将0xFFFFF8解释为(int64_t)0x00000000FFFFF8,这是一个正值

您正在寻找以下内容:

(gdb)p/d(int)0xFFFFF8
$9=-8
(gdb)p/u(int)0xFFFFF8
$10=4294967288


谢谢你的帮助,现在看来很明显。我还找到了解决方案的替代方案:
p/d-0xfffff8
,它返回
$5=8
。它可以更快(即不需要Shift键),您只需记住再次更改结果的符号即可。