为什么我得到警告C4756:在返回float :: PositiveInfinity时,在常量算术中溢出?

Jon*_*age 5 floating-point c++-cli overflow

我有一些代码返回float :: PositiveInfinity来指示事件永远不会发生但由于某种原因编译器(MS Visual Studio 2013)给出了以下警告:

warning C4756: overflow in constant arithmetic
Run Code Online (Sandbox Code Playgroud)

有问题的代码如下所示:

property float MinsRemainingUntilNextEvent
{
    virtual float get()
    { 
        return float::PositiveInfinity;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是什么意思,我应该关心?MS的文档没有为我解释......

Pas*_*uoq 6

我敢打赌,编译器的实现者选择为任何可以在编译时计算的浮点表达式发出警告,其结果是+inf,这意味着将系统地发出警告float::PositiveInfinity.

您的使用float::PositiveInfinity是完全有效和无害的.忽略警告.我想建议你得到一个更好的编译器,但GCC 在浮点时同样很傻.