该计划的输出是什么?

Man*_*san 0 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;
}
Run Code Online (Sandbox Code Playgroud)

结果是

00 00 AC 40

.

Moh*_*ain 5

该程序重新解释存储浮点数的内存.根据目标的大小(此处为float),其表示(假设IEEE754)和机器字节序,它可以提供不同的输出.

在这种情况下,看起来机器是小端,浮点表示是IEEE754.

您可以使用在线工具以二进制形式显示浮点表示.

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

松散相关的主题:严格别名规则.