gpt4 book ai didi

swift - 编译时检查 Swift 中除以 0

转载 作者:搜寻专家 更新时间:2023-11-01 07:20:09 24 4
gpt4 key购买 nike

为什么 print(1.0/0) 返回 infprint(0.0/0) 返回 NaN 而 print(0/0) 编译时失败?

似乎 Swift 有编译时检查除以 0 的整数,但没有检查 float / double ?

有人能解释一下为什么会这样吗?

最佳答案

float 及其算法的 IEEE 754 标准将“无穷大”和“非数字”定义为有效值。它们在数学上有用的意义上可能不是“有效的”……但它们是标准定义的。使用 float 的代码期望来自某些操作的这些值,并且可以在需要时检查/响应它们,因此 Swift 遵守 FP 数学标准。

没有相应的跨语言、独立于 CPU 的整数运算标准。在 Swift 之外,通常假设整数除以零是 Bad Thing。 ,因为您不一定知道它是否会停止程序或产生不正确的结果。

Swift 的默认行为是对所有整数运算都是“安全的”,因此任何会溢出类型边界的操作都会导致运行时异常。 (包括被零除。)

当您将 0/0 放入文字代码中时,您会得到一个编译时 错误,因为 Swift 在编译时对常量执行算术运算。 (如果你有像 let x = 1 + 2 这样的代码,在运行时计算结果 3 是没有意义的,因为它在程序的所有运行中都是不变的.)

关于swift - 编译时检查 Swift 中除以 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39582405/

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