谁能向我解释 Xcode/Objective C 的这些结果?当然,没有任何情况下 -2 应该测试大于 31。
(lldb) p dayOfMonth
(int) $37 = -2
(lldb) p (dayOfMonth > 31)
(bool) $38 = true
(lldb) p (dayOfMonth > (int)31)
(bool) $39 = true
(lldb) p (dayOfMonth > (float)31)
(bool) $40 = false
我从未见过像这样直接错误的答案,也无法想象它是如何被误解的。就像调试器说的那样,dayOfMonth 只是一个 int。
编辑添加:这是失败的代码(删除了一些不相关的行):
NSRange monthdays = [self.calendar rangeOfUnit:NSDayCalendarUnit inUnit:NSMonthCalendarUnit forDate:self.displayedDate];
int dayOfMonth = i+1-shift; // negative days are at end of prev month; days higher than length of month are in next
if (dayOfMonth < 1) cellView.dayLabel = prevMonthDays.length + dayOfMonth;
if (dayOfMonth > monthdays.length) cellView.dayLabel = dayOfMonth - monthdays.length;
当 dayOfMonth 为负时,第二个if
评估为 true。