Возможно, в моем знании C есть отверстие, но я немного смущен, почему это происходит.Запутанный вывод LLDB
(lldb) p lineGroup
(NSInteger) $17 = -1
(lldb) p (lineGroup > 4)
(bool) $18 = true
(lldb) p (lineGroup < 0)
(bool) $19 = false
(lldb) p (-1 < 0)
(bool) $20 = true
(lldb) p ((int)lineGroup < 0)
(bool) $21 = false
(lldb) p ((int)lineGroup > 4)
(bool) $22 = true
(lldb)
Переменная lineGroup
назначается следующим образом:
- (void)gotLineGroupInformation:(NSString *)lineGroupString
{
NSInteger lineGroup = [lineGroupString integerValue];
if(lineGroup >= 0)
{
// Always gets called
}
else
{
// Never gets called
}
}
Спасибо, Энди
В какой архитектуре вы собрали? Если 64-разрядный, NSInteger будет 64-битным, но int будет 32-битным. –
Ваш вопрос только о явно ошибочном выходе отладчика? Или ваш код работает не так, как ожидалось? –
Возможный дубликат [Целевая ошибка сравнения Objective C] (http://stackoverflow.com/questions/16725029/objective-c-integer-comparison-error) –