我最初认为下面的代码会返回0,我的问题是,是否有一个函数可用于仅在此处接收零/正结果?
NSUInteger pruneSize = 5 - 20; // Returns: -15
目前我只是自己查看结果,但想知道我是否遗漏了更简单的事情。
NSUInteger pruneSize = 5 - 20;
if(pruneSize >= 0) {
// Do zero/positive Stuff ...
}
答案 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方法