gpt4 book ai didi

c - 为什么 float 不会溢出到无穷大

转载 作者:行者123 更新时间:2023-12-05 08:50:10 24 4
gpt4 key购买 nike

假设我们有以下代码:

float f = 999999999999*9999999999999999*999999999999; //a large number to make it overflow

所以根据 float 规则,结果应该是无穷大: enter image description here

但是我检查了结果的位表示,不是无穷大,是别的,怎么会呢?

最佳答案

99999999999*9999999999999999*999999999999 中的值都不是 float ,因此您没有进行浮点运算。事实上,即使没有设置任何额外的警告选项,gcc 也会对您的代码发出此警告(clang 会给出类似的警告):

warning: integer overflow in expression of type 'long int' results in '4467987020393345025' [-Woverflow]

改为这样做

float f = 999999999999.0f*9999999999999999*999999999999;
printf("%f\n", f);

输出:

inf

将第一个文字设为 float 会强制执行浮点运算,因此您可以获得所需的无限值。

关于c - 为什么 float 不会溢出到无穷大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62695862/

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