我有一个if语句,用于检查indice是否小于数组的结尾。 当“i”的值为-1时,这不起作用。
NSMutableArray *myArray = [NSMutableArray array];
[myArray addObject:@"coucou"];
int i = -1;
// Not working
if (i < ([myArray count] - 1) ){
NSLog(@" first ok ");
}
// Fix
int count = [myArray count] - 1;
if ( i < count ){
NSLog(@" second ok ");
}
这是我需要做的才能使它工作(相同的算法,但使用中间变量来存储数组的大小) 谁知道为什么?
答案 0 :(得分:3)
[myArray count]
返回一个NSUInteger,它是一个无符号整数值。
当您将无符号整数与有符号整数进行比较时,有符号整数将转换为无符号整数,因此值i
现在不是负数。
查看here了解更多信息。
答案 1 :(得分:0)
您正在将带符号的整数与int进行比较,这就是为什么会发生这种情况使用NSUInteger而不是int。 它肯定会起作用
答案 2 :(得分:0)
[myArray count]
它返回你需要保留这两个
((NSInteger)[myArray count] - 1) OR ((int)[myArray count] - 1)