【发布时间】:2012-07-18 01:33:19
【问题描述】:
我正在尝试比较两个整数。一个是NSIndexPath 的row,另一个是NSArray 的count。 row 等于 0,count 等于 2。我将它们放在 if 语句中,如下所示:
if([self.selectedSetpoint row] < ([self.theCategories count]-3))
{
//Do true stuff
}
所以根据我的数学,if 声明应该是错误的,因为我正在比较 0 < -1。但是,我一直认为这句话是真的,if 内的块正在运行。我已经尝试NSLog 这些值以确保我不只是得到错误的值。我把它放在if 声明之前:
NSLog(@"%d",[self.selectedSetpoint row]);
NSLog(@"%d",[self.theCategories count]-3);
NSLog(@"%@",[self.selectedSetpoint row] < ([self.theCategories count]-3)?@"Yes":@"No");
并在控制台上得到了这个:
2012-07-17 08:58:46.061 App[61345:11603] 0
2012-07-17 08:58:46.061 App[61345:11603] -1
2012-07-17 08:58:46.062 App[61345:11603] Yes
任何想法为什么这个比较是真实的?我对比较整数有什么误解吗?
我有另一个 if 语句就在这个比较的上面
[self.selectedSetpoint row]<([self.theCategories count]-2)
这是0 < 0,它工作正常(返回NO)。所以我觉得使用负整数有一些问题,我没有得到。
提前谢谢你。
【问题讨论】:
-
如果你的意思是 -1 应该是 +1,你可以使用 ABS(theCategories.count) 所以它返回整数的绝对值。
-
不是因为你在比较 NSUInteger 和 NSInteger 吗?
-
@EPyLEpSY 不,我不是要获取绝对值,我希望它比较 0 和 -1。
-
@Luke 我不知道,计数是无符号的吗?我想如果我在日志中得到 -1,我将在比较中得到 -1。
-
索引路径的行是 int 而数组的计数是无符号的。
标签: iphone objective-c ios