Objective c 如何将带符号整数舍入到零?
我到处都在这样做Objective c 如何将带符号整数舍入到零?,objective-c,math,integer,Objective C,Math,Integer,我到处都在这样做 NSInteger myint = -3; // ... NSUInteger myuint = myint >= 0 ? myint : 0; 在目标C中是否有一个数学函数可以在不使用三元/条件赋值的情况下做同样的事情?大概是这样的: NSUInteger myuint = rounduptozero( myint ); 或使用: NSUInteger myuint = MAX(myint, 0); 或者定义您自己的rounduptzero函数: NSUInt
NSInteger myint = -3;
// ...
NSUInteger myuint = myint >= 0 ? myint : 0;
在目标C中是否有一个数学函数可以在不使用三元/条件赋值的情况下做同样的事情?大概是这样的:
NSUInteger myuint = rounduptozero( myint );
或使用:
NSUInteger myuint = MAX(myint, 0);
或者定义您自己的rounduptzero
函数:
NSUInteger rounduptozero(NSInteger val) {
return MAX(val, 0);
}
NSUInteger myuint = rounduptozero(mint);
max定义在ObjtoE-C运行时(更具体地说,它在NSObjCRunTIME中,它包含在基础框架中),因此您可以安全地使用Max(值,0)。
如果您到处使用它,为了清晰起见,我建议将该宏包装在您自己的(或函数)中。为什么我不能使用表达式作为参数之一,比如
MAX(myint1-myint2,0)
?它只会给我一个NSNotFound
。你可以这样做。为什么你不认为你可以?当我尝试时,它会给我一个NSNotFound
值。但是当我首先声明同一个表达式作为变量时,它可以正常工作。根据值的不同,减去有符号和无符号的值是危险的。结果将被视为无符号,因此,如果明显的结果为负数,则会得到一个巨大的无符号值。请使用强制转换。但是你需要非常小心。