我的代码是否可以安全地检查下溢
Will my code safely check for an underflow?
我编写了以下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
在变量赋值后,不能通过将其与标准限制进行比较来检查是否存在下溢或上溢。
简单示例:
int v1 = INT_MAX;
int v2 = INT_MAX;
int v3 = v1 * v2;
表达式v1 * v2
导致溢出。然而,CCD_ 2的值将仍然是有效的CCD_。
您必须在v1 * v2
之前执行检查,以确定它是否会导致溢出。
相关文章:
- 自定义 std::fstream,std::filebuf 的溢出和下溢函数未为每个字符调用
- 带有剪裁下溢的夏亚减法
- 使用 size_t 初始化循环变量时的整数下溢
- 无锁队列实现中的虚假下溢C++
- 在减法期间将 C++ 转换为字节 (unit8_t) 不会像我预期的那样强制下溢;输出int16_t;为什么?
- C++长 int 溢出/下溢
- 上溢/下溢是执行时未定义的行为吗
- 检查下一步是检查员
- C++ 在将字符串提取到标量时处理溢出/下溢
- C/FORTRAN将双下溢设置为零
- basic_streambuf炒锅的功能溢出和下溢如何
- 为什么C++下溢/溢出行为被视为未定义
- C++下溢和溢出
- 渐变下溢程序的表示
- 指针下溢或溢出时会发生什么情况
- 溢流/下溢问题
- 如何在C语言中检测浮点下溢
- 如何检测双精度浮点溢出和下溢
- 我的代码是否可以安全地检查下溢
- 在对基本类型进行数学运算时检查溢出/下溢