c如何在8位槽中存储双十进制数



c如何在8位槽中存储双十进制?

#include "stdio.h"
main(){
  double x = 123.456;
  printf("n %d - %e n",sizeof(x),x);
}

输出:

8 - 23.456

x的值是正确的123.456,但据说它只有8位。

这不是8位。它是8字节。每个字节至少是8位(通常正好是8位)。

所以double可能是8 * 8 = 64位。

编辑:

sizeof()运算符返回对象的大小(以字节为单位)

根据定义,"字节"是char的大小。(这就是C语言标准对"字节"一词的定义;它在其他上下文中可能有不同的含义。

一个字节中的位数由宏CHAR_BIT指定,在<limits.h>中定义。几乎你可能遇到的任何系统都有CHAR_BIT == 8,但我知道一些dsp(数字信号处理器)的实现将CHAR_BIT设置为16或32。

非常迂腐的sizeof返回的是sizeof char的倍数。

在所有通用平台上,这意味着sizeof以字节为单位返回。

最新更新