c:更改变量类型而不进行强制转换

明显死亡

我将uint32_t更改为float,但未更改实际位。

只是为了确保:我不想抛弃它。那么float f = (float) i是什么我wan't做的,因为它改变了位正好相反。

我将使用此函数将我的(伪)随机数转换为浮点数,而无需执行不需要的数学运算。

我当前正在做的并且已经在工作的是:

float random_float( uint64_t seed ) {

    // Generate random and change bit format to ieee
    uint32_t asInt = (random_int( seed ) & 0x7FFFFF) | (0x7E000000>>1);

    // Make it a float
    return *(float*)(void*)&asInt; // <-- pretty ugly and nees a variable
}                                                                      

问题:现在,我想摆脱asInt变量,并且想知道是否有更好/不太丑陋的方法来获取此变量的地址,将其强制转换两次并再次取消引用?

Ishay Peled

您可以尝试合并-只要确保类型在内存大小上相同:

union convertor {
    int asInt;
    float asFloat;
};

然后,您可以将int分配给asFloat(或者,如果需要的话)。当我需要一方面进行按位运算而另一方面仍要获得uint32_t表示时,我经常使用它

[编辑]
就像许多注释器正确指出的那样,您必须考虑不能由NAN,+ INF,-INF,+ 0,-0等整数表示的值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

TypeScript:强制将变量识别为一种类型而不进行强制转换

来自分类Dev

如何在C中不进行赋值而强制转换指针?

来自分类Dev

C - 赋值从指针生成整数而不进行强制转换

来自分类Dev

强制转换为 Object 后 Java 更改变量的值

来自分类Dev

C语言中的强制转换警告:赋值使指针不进行强制转换而生成整数

来自分类Dev

Java继承而不进行强制转换

来自分类Dev

传递对象的实现而不进行强制转换

来自分类Dev

在不进行强制转换的Java重载时,是否可以限制泛型类型?

来自分类Dev

如何在不进行强制转换的情况下取消引用void变量

来自分类Dev

为什么在不进行强制转换的情况下将任何内容转换为更具体的类型

来自分类Dev

“传递'goodString'的参数1使指针从整数而不进行强制转换”编译器错误-C

来自分类Dev

动态变量在不进行类型转换的情况下不接受继承的属性

来自分类Dev

初始化C ++后更改变量类型

来自分类Dev

初始化C ++后更改变量类型

来自分类Dev

赋值使指针从整数变为整数,而不进行强制转换

来自分类Dev

来自Enum类的字节,不进行强制转换

来自分类Dev

警告:赋值从整数开始取整,而不进行强制转换

来自分类Dev

警告从整数生成指针而不进行强制转换

来自分类Dev

传递参数使指针来自整数而不进行强制转换

来自分类Dev

从C#中的未知类型进行强制转换

来自分类Dev

在不进行隐式/显式强制转换的情况下在C中查找字节序

来自分类Dev

进行递归时无法更改变量

来自分类Dev

当具有有界类型参数的类的方法返回其自身类型的值时,如何让返回值保持通用(不进行强制转换)?

来自分类Dev

不进行转换的TypeScript窄枚举类型(Redux)

来自分类Dev

使用类型变量进行转换

来自分类Dev

C#在excel文件中保存时动态更改变量类型

来自分类Dev

c ++根据时间更改变量的值

来自分类Dev

C ++中的继承和更改变量

来自分类Dev

在C#转换数组中不进行复制

Related 相关文章

  1. 1

    TypeScript:强制将变量识别为一种类型而不进行强制转换

  2. 2

    如何在C中不进行赋值而强制转换指针?

  3. 3

    C - 赋值从指针生成整数而不进行强制转换

  4. 4

    强制转换为 Object 后 Java 更改变量的值

  5. 5

    C语言中的强制转换警告:赋值使指针不进行强制转换而生成整数

  6. 6

    Java继承而不进行强制转换

  7. 7

    传递对象的实现而不进行强制转换

  8. 8

    在不进行强制转换的Java重载时,是否可以限制泛型类型?

  9. 9

    如何在不进行强制转换的情况下取消引用void变量

  10. 10

    为什么在不进行强制转换的情况下将任何内容转换为更具体的类型

  11. 11

    “传递'goodString'的参数1使指针从整数而不进行强制转换”编译器错误-C

  12. 12

    动态变量在不进行类型转换的情况下不接受继承的属性

  13. 13

    初始化C ++后更改变量类型

  14. 14

    初始化C ++后更改变量类型

  15. 15

    赋值使指针从整数变为整数,而不进行强制转换

  16. 16

    来自Enum类的字节,不进行强制转换

  17. 17

    警告:赋值从整数开始取整,而不进行强制转换

  18. 18

    警告从整数生成指针而不进行强制转换

  19. 19

    传递参数使指针来自整数而不进行强制转换

  20. 20

    从C#中的未知类型进行强制转换

  21. 21

    在不进行隐式/显式强制转换的情况下在C中查找字节序

  22. 22

    进行递归时无法更改变量

  23. 23

    当具有有界类型参数的类的方法返回其自身类型的值时,如何让返回值保持通用(不进行强制转换)?

  24. 24

    不进行转换的TypeScript窄枚举类型(Redux)

  25. 25

    使用类型变量进行转换

  26. 26

    C#在excel文件中保存时动态更改变量类型

  27. 27

    c ++根据时间更改变量的值

  28. 28

    C ++中的继承和更改变量

  29. 29

    在C#转换数组中不进行复制

热门标签

归档