gpt4 book ai didi

c - 为什么给变量加0?

转载 作者:行者123 更新时间:2023-12-03 23:00:47 25 4
gpt4 key购买 nike

我正在移植 C source codeDelphi .
我在该源中发现了很多与此类似的代码(此处为第 190 行):

if (x != 0) { *sinx += (real)(0); *cosx += (real)(0); }
我们在这样的背景下:
typedef double real;
real x;
real* sinx;
real* cosx;
我想知道添加 0 会有什么用处。

最佳答案

感谢大家评论我的问题。它把我推上了正确的轨道:
将 0.0 添加到 -0.0 得出结果 0.0。将 0.0 添加到其他任何内容都无效。换句话说,将 0.0 添加到一个值不会改变该值,除非该值是 -0.0,在这种情况下,结果将为 0.0。
article解释一下,在 IEEE 754 二进制浮点数中,零是一个有符号量。你可以有 -0.0 和 +0.0。
C 源代码做了很多努力来保持浮点运算的精度,为此必须处理负零。
我检查了 MSVC 和 Delphi 以完全相同的方式处理浮点值(双数据类型),所以我只需要将 C 代码完全转换为 Delphi,它在两种语言中的工作方式相同。

关于c - 为什么给变量加0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65914537/

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