8

我们如何比较两个 NSInteger 数字?我有两个 NSIntegers 并以常规方式比较它们不起作用。

if (NSIntegerNumber1 >= NSIntegerNumber2) {
    //do something
}

尽管第一个值为 13,第二个值为 17,但 if 循环正在执行

任何的想法 ?

4

4 回答 4

12

NSInteger只是内置整数类型(例如intor long)的 typedef。

使用 比较是安全的a == b

其他常见运算符的行为可预测:!=, <=, <,>=等。

最后,NSInteger的底层类型因平台/架构而异。假设它始终是 32 位或 64 位是不安全的。

于 2012-02-28T05:21:44.187 回答
11

好吧,由于名称中有 Integer 和 Number,您可能已将这两个值声明为 NSNumber 而不是 NSInteger。如果是这样,那么您需要执行以下操作:

 if ([NSIntegerNumber1 intValue] >= [NSIntegerNumber2 intValue]) {
      // do something
 }

否则它应该按原样工作!

于 2012-02-28T05:19:25.063 回答
9
NSInteger int1;
NSInteger int2;

int1 = 13;
int2 = 17;

if (int1 > int2)
{
    NSLog(@"works");
}
于 2012-02-28T05:25:10.287 回答
2

比较整数时,使用它可以正常工作:

int a = 5;
int b = 7;

if (a < b) {

NSLog(@"%d is smaller than %d" a, b);   

}
于 2012-02-28T11:17:04.820 回答