2011-08-02 5 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(符号付き整数)に変更する必要があります。符号付き整数の下限値を0にクリップする場合は、次のようにします。

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

はい、警告を出しました。私はXcodeに入力していないので、ここに入力しました。型をNSIntegerに変更して比較を行います。とても有難い。 – fuzzygoat

1

あなたはあなたに正または任意の場合はゼロの数を返しますabs(pruneSize)を使用することができます。

EDIT:

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 

や腹筋法に

関連する問題