objective-c - 为什么这不会崩溃?我这里不是除以零吗?

标签 objective-c c crash floating-point

我得到由两点界定的直线的斜率

float slopeXY(CGPoint p1, CGPoint p2)
{
    return ((p2.y - p1.y) / (p2.x - p1.x));
}

如果我给它一条零大小的线,

CGPoint p1 = CGPointMake(0, 10);
CGPoint p2 = CGPointMake(0, 10);

float sxy = slopeXY(p1, p2);

我没有得到被零除的错误。

最佳答案

在 OS X 上的默认浮点环境中,浮点除以零不会导致陷阱或异常。 0.0/0.0 将改为返回 NaN 并在 fpscr 中引发无效浮点状态标志。将非零值除以 0.0 将返回无穷大并提高被零除标志。

如果需要,您可以使用 math.h 中定义的 isnan( ) 和 isinf( ) 函数检查这些条件

关于objective-c - 为什么这不会崩溃?我这里不是除以零吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1449109/

相关文章:

c# - 在没有用户提示的情况下使用 RegisterApplicationRestart 重新启动崩溃的程序

objective-c - 将 plist 数据从一个 View 传递到另一个 View

ios - XCode iOS7 - 带有 UITextView 的动态单元格(如提醒应用程序)

iphone - 从 mediawiki xml 格式 api 获取出生日期、出生地

ios - NSURLConnection 失败,没有错误

c - 字节 '\x09' 终止字符串?

从 Knuth 编译 CWEB 程序

c - 将整个数组传递给函数

ios - 这些快速崩溃意味着什么?

ruby - Watir 4.0.2单击会使浏览器崩溃