GDB中C语言右移表达式计算结果异常的问题咨询
GDB中C语言右移表达式计算结果异常的问题咨询
最近我在openEuler环境下用GDB调试时碰到了一个费解的问题,想请教下各位大佬:
我在GDB里执行右移表达式的打印命令,结果和预期完全不一样:
(gdb_openEuler) p -9 >> 3 $1 = -1
我使用的GDB版本信息如下:
GNU gdb (GDB) openEuler 14.1-3.oe2409 Copyright (C) 2023 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later
按照C语言的运算逻辑,-9 >> 3的结果应该是-2才对。而且我在同一个环境下写了个简单的测试程序验证:
int main() { printf("%d\n", -9 >> 3); }
运行这个程序确实输出了预期的-2。
更奇怪的是,我在Ubuntu环境的另一个GDB(版本为GNU gdb (Ubuntu 12.1-0ubuntu1))里执行同样的表达式,得到的结果也是正确的-2。
有没有大佬能帮忙解释下openEuler这个GDB版本里为什么会出现这个计算错误呀?
备注:内容来源于stack exchange,提问作者Oscar Hua
相关产品推荐
相关产品推荐

