其他分享
首页 > 其他分享> > 可以浮点乘法在C中抛出异常吗?

可以浮点乘法在C中抛出异常吗?

作者:互联网

这可能吗?我不认为是,但我不知道这是标准会说的,还是它的实施定义?我问,因为我想知道是否安全或者值得标记一个constexpr函数,比如noexcept

EX:

constexpr double to_meters(double y) noexcept? {
  return y * 10;
}
constexpr double x = to_meters(y); // Clang-Tidy warns about possible exception without noexcept

解决方法:

语言定义在这里没有给你任何保证,但是因为几乎每一个实现(也就是说,我都不知道)没有实现IEEE-754数学,它不会抛出异常,所以我不是担心.更一般地说,抛出异常的浮点数学包必须用C编写;这是不太可能的.

但是,当发生引起“浮点异常”的浮点错误时,您可能会收到消息;这是一个浮点异常,而不是C异常,它与C异常无关.这是一个运行时错误,具有一个特殊的名称.

标签:noexcept,c
来源: https://codeday.me/bug/20190910/1800567.html