c - 程序的输出是什么?

标签 c

我在http://indiabix.com/中看到了下面的代码 谁能解释一下代码?

#include<stdio.h>
#include<math.h>

int main()
{
   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;
}

结果是

00 00 AC 40

.

最佳答案

这个程序重新解释存储 float 的内存。取决于目的地的大小(此处 float )、其表示(假设 IEEE754 )和 machine endianness它可能会给出不同的输出。

在这种情况下,机器似乎是小端,浮点表示是 IEEE754。

您可以使用 this以二进制形式可视化 float 表示的在线工具。

+-------------+-----------------------------------------------------------+
| Input       | 5.375                                                     |
+-------------+-----------------------------------------------------------+
| Binary32    | 40 AC 00 00                                               |
+--------+----+-----+---------------+-------------------------------------+
| Status | Sign [1] | Exponent [8]  | Significand [23]                    |
+--------+----------+---------------+-------------------------------------+
| Normal |   0 (+)  | 10000001 (+2) | 1.01011000000000000000000 (1.34375) |
+--------+----------+---------------+-------------------------------------+

松散相关主题:Strict aliasing rule.

关于c - 程序的输出是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30772310/

相关文章:

c - Keil 中的 sprintf 令人讨厌的警告

c - 用户空间中的线程和产量

c - 在 C 中将主文件拆分为模块

c - 打破条件变量死锁

c - c 中数学的 size_t、intptr_t 和 uintptr_t

c - Makefile 可能错误,未定义对 C 中函数的引用

c - 如何编写正确的 do..while 循环?

c - Main递归调用没有局部变量

c - 如何创建一个由使用 strtok 函数创建的标记组成的数组?

c++ - CHAR_BIT 的更好名称?