我编写了以下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
答案 0 :(得分:3)
通过将变量与标准限值进行比较,为变量赋值后,无法检查下溢或溢出。
简单示例:
int v1 = INT_MAX;
int v2 = INT_MAX;
int v3 = v1 * v2;
表达式v1 * v2
导致溢出。但是,v3
的值仍然是有效int
。
您必须在v1 * v2
之前执行检查,以确定是否会导致溢出。