ObjC中nan和相似值的含义

Wol*_*ink 3 floating-point null objective-c nan

nan在一些代码中遇到了价值,我知道如何处理它,但在试图解释究竟是什么意思时,我意识到我不确定自己.对于我想要澄清的事情,也有一些类似的奇怪值.

inf 这显然意味着无限,但是当你达到最大浮动值时会出现这种情况吗?

nan 究竟是什么意思,什么时候弹出这个值?

nil我想我确实知道这个.尚未分配的对象的实例.无论如何,我认为它属于这个列表.

null 我不确定这个,但我认为它类似于零?

aba*_*ert 12

inf 这显然意味着无限,但是当你达到最大浮动值时会出现这种情况吗?

这不是ObjC的一部分,除了NSNumber使用它作为-description持有无限值的时间.

a中的实际值NSNumber是a double,由C定义,实际上,定义主要取决于平台.但是,在大多数平台上,它都是一个IEEE-754 binary64.IEEE 754标准定义了一个仿射扩展的实数线,具有正无穷大和负无穷大的值以及有限值.它还精确定义了有限计算可以溢出到无穷大的不同方式,以及代码如何控制它.但是,作为一般规则,是的,如果计算超过a的最大有限值double,则得到正无穷大.

nan 究竟是什么意思,什么时候弹出这个值?

这也主要是关于C和IEEE-754,而不是ObjC(再次,除了-descriptiona NSNumber).维基百科有一个很好的页面NaN,但是,简单地说它意味着"不是一个数字",并且它用于没有合理价值的情况,甚至是无穷大(或者在太多不同的值之间不明确的地方),例如0/0.

nil我想我确实知道这个.尚未分配的对象的实例.无论如何,我认为它属于这个列表.

nil不是对象的实例.nil是一个空指针,当使用没有实例指向.它基本上等同于(id)0(NSObject *)0.

但是"一个尚未分配的对象"不是一个对象,并且不存在,所以...在某种程度上说首先谈论这样的事情,我想你可以说nil是指针它.

null我不确定这个,但我认为它类似于nil

+[NSNull null]值被用作实际存在但不代表什么的占位符对象,在一个你实际上不能拥有任何东西的地方(例如,在一个中NSArray).

您还可以看到null是否尝试将空指针打印为C字符串(例如NSLog(@"%s", 0)).但是你看到的任何代码实际上都不是合法的C或ObjC代码.

同时,人们经常混淆nullNULL,这意味着任何空指针.

所以,当你有一个id,NSObject *,NSSomeOtherClass *,等等,你没有什么它指向,使用nil.如果你有一个指向非ObjC值的指针,比如a int *,并且你没有指向它的任何东西,请使用NULL.如果要将空指针放入集合中,请使用null.