Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何将带符号整数舍入到零?_Objective C_Math_Integer - Fatal编程技术网

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
值。但是当我首先声明同一个表达式作为变量时,它可以正常工作。根据值的不同,减去有符号和无符号的值是危险的。结果将被视为无符号,因此,如果明显的结果为负数,则会得到一个巨大的无符号值。请使用强制转换。但是你需要非常小心。