我的代码会安全地检查下溢吗?

时间:2014-04-24 21:35:29

标签: c++

我编写了以下C ++代码来检查下溢。不确定这是一个好习惯。

#include <limits>
#include <iostream>

int main()
{
    float d = 1.e-29;
    std::cout<<"d: "<<d<<" underflow? "<<(d<std::numeric_limits<float>::min())<<std::endl;
    d = 1.e-59;
    std::cout<<"d: "<<d<<" underflow? "<<(d<std::numeric_limits<float>::min())<<std::endl;
}

打印输出

d: 1e-29 underflow? 0
d: 0 underflow? 1

1 个答案:

答案 0 :(得分:3)

通过将变量与标准限值进行比较,为变量赋值后,无法检查下溢或溢出

简单示例:

int v1 = INT_MAX;
int v2 = INT_MAX;
int v3 = v1 * v2;

表达式v1 * v2导致溢出。但是,v3的值仍然是有效int

您必须在v1 * v2之前执行检查,以确定是否会导致溢出。