2013-12-03 43 views
0

我一直在做这个到处如何将有符号整数舍入为零?

NSInteger myint = -3; 

// ... 

NSUInteger myuint = myint >= 0 ? myint : 0; 

是否有目标C数学函数,可以做同样的事情,而不使用三元/有条件分配?事情是这样的:

NSUInteger myuint = rounduptozero(myint); 

回答

2

要么使用:

NSUInteger myuint = MAX(myint, 0); 

或定义自己的rounduptozero功能:

NSUInteger rounduptozero(NSInteger val) { 
    return MAX(val, 0); 
} 

NSUInteger myuint = rounduptozero(mint); 
+0

为什么我不能使用表达式作为其中一个参数,比如'MAX(myint1 - myint2,0)'?它只是给了我一个'NSNotFound'。 – zakdances

+0

你可以做到这一点。你为什么不认为你可以? – rmaddy

+0

当我尝试时,它给了我一个'NSNotFound'值。但是当我首先声明与变量相同的表达式时,它可以正常工作。 – zakdances

0

MAX中定义的Objective-C运行(更具体地说,它是在NSObjCRuntime,它包含在Foundation框架中),所以你可以安全地使用MAX(值,0)。

如果你在所有地方都使用它,我建议将该宏包装在你自己的(或函数中)以便清晰。

相关问题