返回零或正数?

fuz*_*oat 1 iphone cocoa-touch objective-c

我最初认为下面的代码会返回0,我的问题是,有一个函数可以用来在这里只接收零/正结果吗?

NSUInteger pruneSize = 5 - 20; // Returns: -15
Run Code Online (Sandbox Code Playgroud)

目前我只是自己检查结果,但想知道我是否遗漏了更简单的东西.

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

tas*_*oor 7

pruneSize >= 0总是pruneSize如未签名的那样真实.你应该在这里收到警告.您需要将类型更改NSInteger为有符号整数.如果要将signed值的较低值剪切为零,则可以执行以下操作:

NSInteger pruneSize = 5 - 20; // signed int
pruneSize = pruneSize < 0 ? 0 : pruneSize;
Run Code Online (Sandbox Code Playgroud)