gpt4 book ai didi

c - 使用 %d 说明符表示 float 的字节顺序

转载 作者:行者123 更新时间:2023-11-30 20:03:42 25 4
gpt4 key购买 nike

void main()
{
float a=2;
printf("%d",a);
}

在我的机器中,float 为 4 个字节,int 为 2 个字节,字节以小端格式存储。

a 是 0x 00 00 00 02

现在由于我的机器是小端字节序,字节应该存储为 0x 02 00 00 00

现在,当我使用 %d 说明符时,应获取前 2 个字节,输出应为 512,但我没有得到该输出。

谁能告诉我为什么会这样?

最佳答案

使用错误的格式说明符来 printf 调用 undefined behavior

在这种特殊情况下,可能发生的情况是浮点类型不会像整数类型一样被插入堆栈。但是,您不能依赖此行为,因为标准并未规定会发生什么。

如果要打印 float 中的字节,请将 unsigned char 指向它并循环遍历字节:

float a=2;
unsigned char *c = (unsigned char *)&a;
int i;
for (i=0; i<sizeof(float); i++) {
printf("%02x ", c[i]);
}
printf("\n");

此外,假设您的机器使用 IEEE754 float 的格式,2 的表示形式不是 0x00000002,而是 0x40000000

关于c - 使用 %d 说明符表示 float 的字节顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48080212/

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