Objective-C:int不能是NAN?

时间:2012-09-10 07:25:42

标签: objective-c ios int double nan

似乎Objective-C中的int不能是NAN。 这种比较返回false。

int i = NAN;
NSLog(@"isNan: %@", (isnan(i)) ? @"YES" : @"NO");

有没有办法将int设置为NAN,还是我必须使用double?

double d = NAN;
NSLog(@"isNan: %@", (isnan(d)) ? @"YES" : @"NO");

使用双倍工作。

2 个答案:

答案 0 :(得分:7)

NaN是一个特定于内部表示浮点数({C}中的floatdouble的方式(IEEE 754)的值。 Is不适用于整数数据类型,因为它们可能以完全不同的方式表示。

作为一种变通方法,您可能会看到人们使用单独的布尔标志来指示值是有效还是极值INT_MIN / INT_MAX。尽管如此,为确保有效值,这些与NaN一样好。

答案 1 :(得分:4)

NAN是IEEE 754标准的浮点值(参见http://en.wikipedia.org/wiki/NaN

According to wikipedia

  

大多数固定大小的整数格式没有任何明确指示无效数据的方法。