gpt4 book ai didi

c - 我究竟如何产生这个输出?

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

问题:如果 5.375 的二进制等价标准化形式为0100 0000 1010 1100 0000 0000 0000 0000 ,以下程序的 O/P 是什么:

#include <stdio.h>

int main(void) {
float a = 5.375;
char * p;
int i;
p = (char*)&a;
for (i = 0; i <= 3; i++)
printf("%02X\n",(unsigned char)p[i]);
return 0;
}

这个问题出现在我的一本教科书中,有 4 个与之相关的选项。在此,我有几个疑问:

  1. p 到底是什么?包含?指向?
  2. 02X 是什么意思?意思是?
  3. 实际的O/P不是吗?取决于机器是小端还是大端?

无论如何,给出的答案是:00 00 AC 40

谢谢!

最佳答案

  1. char* p; 意味着 p 将是指向 char 变量的指针,然后你有:

    p = (char*)&a;

    so p 存储变量a的地址(&)。

  2. %02X - 将无符号整数转换为带有大写 A-F 字母的十六进制形式 (X),始终显示两个“数字”(2) 前面有零 (0),更多信息请参见 http://en.cppreference.com/w/c/io/fprintf

  3. 这应该取决于,输出 00 00 AC 40 用于小端,40 AC 00 00 用于大端。看这里https://en.wikipedia.org/wiki/Endianness在这里 https://en.wikipedia.org/wiki/Floating_point查看 float 如何存储在内存中。

关于c - 我究竟如何产生这个输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31278286/

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