我正在尝试理解 C++ 数值属性。因此,我对下溢现象很感兴趣。谁能给我一个下溢的例子以及如何处理它?
问问题
12773 次
2 回答
8
浮点下溢的一个例子是:
double d = DBL_MIN / 3.0;
符合 IEEE 754 的实现应设置d
为“<a href="http://en.wikipedia.org/wiki/Denormal_number" rel="noreferrer">subnormal”,即一个非常接近于零的数字精度降低。您会在Wikipedia上找到大量信息。
一些实现可能会“清零”。上面示例中的结果是设置d
为零。
下溢是无法使用较大的负指数来表示数字的结果。有时可以通过“标准化”计算来避免它们,这相当于以某种方式计算 x 1 *2 N, x 2 *2 N,……而不是 x 1,x 2,……为您选择的 N 。
浮点下溢不是未定义的行为。如果您愿意,可以使用“FPU 异常”通过轮询或接收 SIGFPE 来检测它。请注意,“FPU 异常”与 C++ 异常除了名称之外没有任何共同之处。
于 2013-07-12T09:13:11.403 回答
-3
int main()
{
short int x ;
for(x=0;;x++)
{
printf("%d \n",x);
if(x < 0)
break;
}
}
o/p
---
---
--
32761
32762
32763
32764
32765
32766
32767
-32768
假设您要在签名号中询问下溢概念。这里的概念是签名的 no 就像一个圆圈,一旦你到达圆圈的一半,它将进入该圆圈的 -ve 一半,它将继续并且永远不会结束。它开始于0-32767 (+ve) -32768 to -1 (-ve) half.
这是程序员处理这种情况的责任。如果您下溢,编译器不会引发任何错误。
希望这可以帮助。
于 2013-07-12T08:34:56.070 回答