2009-09-26 30 views
-1

問題再對比我覺得不好意思問這個,但它看起來像是我需要了解:基本的Objective-C中的if語句

爲什麼會出現這種評估爲真? (如果我投它爲int它正確地計算爲false)

NSString *var1 = @"ABC"; 
NSString *var2 = @"ABCD"; 

if (([var1 length] - [var2 length]) > 2) NSLog(@"-1 > 2"); 

回答

6

length是無符號。

參見docs

length 
Returns the number of Unicode characters in the receiver. 

- (NSUInteger)length 

Return Value 
The number of Unicode characters in the receiver. 
+0

嘗試:\t如果(((int)的[VAR1長度] - (int)的[VAR2長度])> 2)的NSLog(@ 「 - 1> 2」); – Rob 2009-09-26 15:51:26

+0

或'if([var1 length]>(2 + [var2 length]))'以避免減法。看看馬!我在現實世界中使用了代數! (當然,理論上,你必須處理溢出,但不現實。) – kperryua 2009-09-26 16:06:21