2011-08-02 98 views
1

我最初認爲下面的代碼會返回0,我的問題是否有一個函數可以用來在這裏只接收零/積極的結果?返回零或正數?

NSUInteger pruneSize = 5 - 20; // Returns: -15 

目前我只是自己檢查結果,但想知道我是否錯過了一些簡單的東西。

NSUInteger pruneSize = 5 - 20; 
if(pruneSize >= 0) { 
    // Do zero/positive Stuff ... 
} 

回答

7

pruneSize >= 0總是如下所示,因爲pruneSize未簽名。你應該在這裏得到警告。您需要將類型更改爲NSInteger,即有符號整數。如果你想將一個有符號整數的下限值設爲零,那麼你可以這樣做:

NSInteger pruneSize = 5 - 20; // signed int 
pruneSize = pruneSize < 0 ? 0 : pruneSize; 
+1

是的,它確實給出了一個警告,我沒有輸入到Xcode只輸入它在這裏。我會將該類型更改爲NSInteger並進行比較。非常感激。 – fuzzygoat

1

您可以使用abs(pruneSize)這將返回任何情況下的正數或零數字。

編輯:

NSUInteger pruneSize = 5-20; 
if(pruneSize < 0) 
{ 
    pruneSize = 0; 
} 
NSLog(@"%d",pruneSize); 

希望這有助於你。

+0

對不起,我不認爲我太清楚了。我想要的是負面結果返回零,即5-20 = 0,5-15 = 0,7-2 = 5等ABS在原來的情況下將返回正面15. – fuzzygoat

+0

我編輯了我的答案,請檢查出來。 –

+0

謝謝Parth ... – fuzzygoat

0

如果你希望你的函數總是返回零,如果你的結果是負的(小於0),則返回零,否則返回結果

int n=0; 
if(result > 0){ //positive 
    n = result 
else 
    n = 0 
return n 

,或者使用ABS方法