gpt4 book ai didi

objective-c - ObjC 中 nan 和类似值的含义

转载 作者:搜寻专家 更新时间:2023-10-30 19:51:42 25 4
gpt4 key购买 nike

我在我的一些代码中遇到过 nan 值并且我知道如何处理它,但是当我试图解释 nan 的确切含义时,我意识到我自己也不确定。还有一些类似的奇怪值,我想澄清一下。

inf 这显然意味着无穷大,但是当您达到最大浮点值时它会出现吗?

nan 这到底是什么意思,这个值什么时候弹出?

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

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

最佳答案

inf this clearly means infinity, but will this show up when you reach the maximum float value?

这实际上不是 ObjC 的一部分,只是 NSNumber 在保存无限值时将其用作 -description

NSNumber 中的实际值是一个 double,它由 C 定义——实际上,该定义在很大程度上取决于平台。但是,在大多数平台上,它是一个 IEEE-754 binary64 . IEEE 754 标准定义了一个 affinely extended real number line ,具有正无穷大和负无穷大的值以及有限值。它还精确定义了有限计算可以溢出到无穷大的不同方式,以及您的代码如何控制它。但是,作为一般规则,是的,如果计算超过 double 的最大有限值,就会得到正无穷大。

nan what exactly does this mean and when does this value pop up?

这也主要是关于 C 和 IEEE-754,而不是 ObjC(同样,NSNumber-description 除外)。维基百科在 NaN 上有一个很好的页面,但是,简单地说,它的意思是“不是数字”,它用于没有合理值的情况,甚至不是无穷大(或者它在太多不同的值之间不明确),比如 0/0 .

nil I think I do know this one. An instance of an object that has not been allocated. I thought it belongs in this list anyway.

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

但是“一个没有被分配的对象”不是一个对象,也不存在,所以……从一开始谈论这样的事情有意义的程度,我想你可以说nil 是指向它的指针。

null I'm not sure about this one but I think it's similar to nil?

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

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

此外,人们经常将 nullNULL 混淆,后者表示任何空指针。

所以,当你有一个 idNSObject *NSSomeOtherClass * 等等,而你却没有任何东西时要指向,请使用 nil。当你有一个指向非 ObjC 值的指针时,比如 int *,而你没有任何东西可以指向它,请使用 NULL。如果您想将空指针放入集合中,请使用 null

关于objective-c - ObjC 中 nan 和类似值的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16879264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com