gpt4 book ai didi

c - IEEE 754 : is v *= -1 always guaranteed to be the same as v = -v?

转载 作者:行者123 更新时间:2023-12-04 02:30:47 29 4
gpt4 key购买 nike

标准(IEEE 754/C)是否保证以下代码断言永远不会失败?

int main()
{
for ( /* all possible float / double values */ )
{
v_neg1 = v * -1;
v_neg2 = -v;
assert( v_neg1 == v_neg2 );
}
return 0;
}

更新。

  1. 当我询问时,我的意思是所有可能的 float/double 值 不包括 NaN
  2. 查看类似问题:.NET decimal.Negate vs multiplying by -1

最佳答案

不,这不一定是真的,因为 NaN 永远不会相互比较。

除此之外,假设符号位独立于指数和绝对有效数,我相信它适用于所有普通值。 C 引用 ISO/IEC 60559/IEEE 754 附录;不幸的是,我自己没有标准。

#include <math.h>
#include <assert.h>


int main(void)
{
double v, v_neg1, v_neg2;

v = NAN;
v_neg1 = v * -1;
v_neg2 = -v;
assert( v_neg1 == v_neg2 );
}

关于c - IEEE 754 : is v *= -1 always guaranteed to be the same as v = -v?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64307302/

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