gpt4 book ai didi

c - 将双关语输入整数并排序

转载 作者:太空宇宙 更新时间:2023-11-04 06:26:05 25 4
gpt4 key购买 nike

假设有一堆 float ,那么它们可以按顺序从小到大排序(即排序)。

如果我将 [1, 2] float “转换”为整数,如下所示,它们会保持相同的顺序吗?我的意思是,从比较实际位的角度来看,它会保留排序顺序吗?

union number {
uint64_t i; // [3]
double f;
};

当我根据 ifnumber 数组进行排序时,我会得到相同的顺序吗?

换句话说,如果:

x.f < y.f

它是否始终保持:

x.i < y.i

?

[1] 根据我的阅读,实际的术语是 "type punning"

[2] 我不能简单地“转换”(如 uint64_t i = (uint64_t)f),因为这只会截断 float ,对吧?

[3] 它对 int64_tuint64_t 都有效吗?

最佳答案

换句话说,如果:x.f < y.f它是否总是认为:x.i < y.i

不,这不适用于负 float 。例如-1为0xbff0000000000000,-2为0xc000000000000000。

关于c - 将双关语输入整数并排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26702729/

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