Objective c 两个变量在调试器中显示为0,但相减得到-5

Objective c 两个变量在调试器中显示为0,但相减得到-5,objective-c,xcode,math,lldb,Objective C,Xcode,Math,Lldb,在这段代码中,答案为0是正确的,但我的结果是-5。那么,为什么这个简单的算术计算是错误的呢?可能发生了什么 int daysFromCurrentDay = (i-(1 - weekDisplay)); // daysFromCurrentDay shows as 0 in the debugger. // currentDay shows as 0 in the debugger. daysFromCurrentDay -= currentDay; // daysFromCurrentD

在这段代码中,答案为0是正确的,但我的结果是-5。那么,为什么这个简单的算术计算是错误的呢?可能发生了什么

int daysFromCurrentDay = (i-(1 - weekDisplay));

// daysFromCurrentDay shows as 0 in the debugger.
// currentDay shows as 0 in the debugger.

daysFromCurrentDay -= currentDay;

// daysFromCurrentDay now shows as -5... What??

从LLDB更改为GDB暂时修复了此问题。。。不确定为什么LLDB显示的值不正确,但问题暂时解决。

很容易证明您的断言
0-0=-5
是错误的,因此除非您可以发布更多上下文,否则我认为这可能是由于调试器的用户错误。@Alan在它前面设置了几行,Hmmm刚刚从LLDB更改为GDB,currentDay现在显示为5而不是0。不确定LLDB出了什么问题,但至少现在我可以调试并修复它。
I
weekDisplay
的类型和值是什么?其他人真的不可能按原样理解这一点,但乍一看,它似乎是未签名的,而您有溢出问题。LLDB有,可能仍然有,显示IVAR的错误。确保您使用的是最新版本。