返回零或正数?

时间:2011-08-02 11:03:27

标签: iphone objective-c cocoa-touch

我最初认为下面的代码会返回0,我的问题是,是否有一个函数可用于仅在此处接收零/正结果?

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

目前我只是自己查看结果,但想知道我是否遗漏了更简单的事情。

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

3 个答案:

答案 0 :(得分:7)

pruneSize >= 0始终为true,因为pruneSize未签名。你应该在这里收到警告。您需要将类型更改为NSInteger,即有符号整数。如果要将signed值的较低值剪辑为零,则可以执行以下操作:

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

答案 1 :(得分:1)

您可以使用abs(pruneSize),无论如何都会返回正数或零数字。

修改

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

希望这会对你有所帮助。

答案 2 :(得分:0)

如果你希望你的函数在结果是负数(小于0)时总是返回零,那么返回零或者返回结果

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

或使用abs方法