在C99中写0.0 / 0.0有效吗?

问题描述 投票:0回答:1

MSVC 在某些情况下不接受

0.0 / 0.0
,但在其他情况下确实接受它们。这个标准符合吗?标准的哪一部分相关?

这会触发

error C2124: divide or mod by zero

double f(void) {
    double a = 0.0 / 0.0;
    return a;
}

编译没有错误:

double a = 0.0 / 0.0;

double f(void) {
    return a;
}

Clang 和 GCC 编译都没有错误。

这是在尝试解决最近的 MSVC 中的(可能有问题的)非常数

NAN
时出现的,请参阅最近的 MSVC 版本不将 NAN 视为常量,解决方法?我想看看
0.0 / 0.0
是否是在某些情况下是有效的替代品。

c visual-c++
1个回答
0
投票

C99 - 6.5.5 乘法运算符

  1. / 运算符的结果是第一个操作数除以第二个操作数所得的商; % 运算符的结果是余数。在这两个操作中,如果第二个操作数的值为零,则行为未定义
© www.soinside.com 2019 - 2024. All rights reserved.