2012-02-28 49 views
6

Làm cách nào để so sánh hai số NSInteger? Tôi có hai NSIntegers và so sánh chúng theo cách thông thường không hoạt động.Làm thế nào để so sánh hai NSInteger?

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

Cho dù, giá trị đầu tiên là 13 và giá trị thứ hai là 17, nếu vòng lặp được thực hiện

Bất kỳ ý tưởng?

+1

Đó là cách bạn làm điều đó. Kiểm tra lại giá trị của chúng: đặt điểm ngắt ngay trước 'if' và đảm bảo chúng là những gì bạn mong đợi. –

+0

NSInteger là alis cho int. vì vậy nó sẽ hoạt động. Khác khôn ngoan chỉ định loại biến NSIntegerNumber1 .. –

+0

Bạn có chắc chắn đây là số NSInteger không? Tôi đoán đây là những NSNumbers và bạn đang cố gắng so sánh các con trỏ. – SVGreg

Trả lời

9
NSInteger int1; 
NSInteger int2; 

int1 = 13; 
int2 = 17; 

if (int1 > int2) 
{ 
    NSLog(@"works"); 
} 
11

Vâng, vì bạn có Số nguyên và Số trong tên, bạn có thể đã khai báo hai giá trị là NSNumber thay vì NSInteger. Nếu vậy, sau đó bạn cần phải làm như sau:

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

Nếu không, nó sẽ hoạt động như vậy!

7

NSInteger chỉ là typedef cho loại tích phân tích hợp sẵn (ví dụ: int hoặc long).

So sánh sử dụng a == b là an toàn.

Các toán tử phổ biến khác có thể dự đoán được: !=, <=, <, >= et al.

Cuối cùng, loại cơ bản của NSInteger thay đổi theo nền tảng/kiến ​​trúc. Nó không phải là an toàn để giả sử nó sẽ luôn luôn là 32 hoặc 64 bit.

+0

Điều này cần được bỏ phiếu, vì nó giải thích lý do –

2

Khi so sánh số nguyên, sử dụng này, sẽ chỉ làm việc tốt:

int a = 5; 
int b = 7; 

if (a < b) { 

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

} 
Các vấn đề liên quan