gpt4 book ai didi

c++ - 为什么 `inf`代表浮点溢出?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:14:18 25 4
gpt4 key购买 nike

这个程序:

#include <iostream>

int main() {
float var_f = 9.999e38; //overflow the float
std::cout << var_f;

std::cin.get();
return 0;
}

打印出:inf

  1. 这里的inf是不是代表无穷大(∞)?

  2. 为什么9.999e38不是无穷大(可以用double类型存储)?

  3. 为什么它只发生在 float 的情况下:

    unsigned long int var_i = 4294967296;//溢出整数

    如果我打印出 var_i,请给我 0(就像我们一直知道的那样)。

我为此使用了 Visual Studio 2015。

最佳答案

  1. Does inf here represent infinity (∞) ?

是的。参见 std::numeric_limits::infinity .

  1. Why, when 9.999e38 is not infinity (which can be store by double type) ?

float 是无穷大(不是 double)。它大于 float 的最大可表示数(即 3.402823466e+380X7F7FFFFF)。

  1. Why it only happen with float

因为它对 float 有意义,但对整数没有意义。根据 IEEE754 (Floating-Point Representation),正无穷大是指数的所有位都设置且分数的所有位都被清除的值(即 0x7f800000),它大于最大的有限float 的值(即 0X7F7FFFFF)。

Floating point number representation
IEEE Floating-Point Representation

关于c++ - 为什么 `inf`代表浮点溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35966411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com