2012-02-28 40 views
6

İki NSInteger sayısını nasıl karşılaştırırız? İki NSInteger'ım var ve onları normal yolla karşılaştırmak işe yaramadı.İki NSInteger nasıl karşılaştırılır?

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

görürken, birinci değer 13 ve ikinci değer döngü

bir fikrin yürütülüyorsa, 17 mi? Eğer isim Tamsayı ve Numarası olması beri

+1

bunu nasıl That. Değerlerini iki kez kontrol edin: "if" den hemen önce bir kesme noktası belirleyin ve beklediğinizden emin olun. –

+0

NSInteger int için geçerlidir. bu yüzden çalışması gerekir. Diğer bilge NSIntegerNumber1 değişkeninin türünü belirtin. –

+0

Bunların NSInteger numaraları olduğundan emin misiniz? Tahminim bunlar NSNumbers ve işaretçileri karşılaştırmaya çalışıyorsunuz. – SVGreg

cevap

9
NSInteger int1; 
NSInteger int2; 

int1 = 13; 
int2 = 17; 

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

Eh, NSNumber yerine NSInteger olarak iki değeri beyan olabilir. Eğer öyleyse, o zaman aşağıdakileri yapmanız gerekir: olduğu gibi

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

Aksi takdirde çalışmalı!

7

NSInteger bir yerleşik entegre türü (örneğin, int veya long) sadece bir typedef.

O a == b kullanarak karşılaştırmak güvenlidir. Diğer ortak operatörler tahmin edilebilir şekilde davranır: !=, <=, <, >= ve diğ.

Son olarak, NSInteger 'in altında yatan tip platform/mimarisine göre değişir. Her zaman 32 veya 64 bit olacağını varsaymak güvenli değildir.

+0

Bu, akıl yürütmeyi açıkladığı için oylanmalıdır. –

2

bu kullanarak, tamsayılar karşılaştırarak, sadece iyi çalışacak:

int a = 5; 
int b = 7; 

if (a < b) { 

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

} 
İlgili konular