c如何在8位插槽中存储双倍小数?

Lim*_*ime 1 c double decimal

c如何在8位插槽中存储双倍小数?

#include "stdio.h"

main(){
  double x = 123.456;
  printf("\n %d - %e \n",sizeof(x),x);
}
Run Code Online (Sandbox Code Playgroud)

输出:

8 - 23.456
Run Code Online (Sandbox Code Playgroud)

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

Mys*_*ial 5

那不是8位.这是8个字节.每个字节至少为8位(通常恰好为8位).

所以它可能是8*8 = 64位double.

编辑:

的sizeof()操作者产生一个对象的大小以字节计.

根据定义,"字节"是a的大小char.(这就是C标准定义单词"byte"的方式;它可能在其他上下文中有不同的含义.)

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

  • 如果你的意思是"小数",如浮点数,那么只需看维基百科文章:(http://en.wikipedia.org/wiki/Floating_point)它实际上存储在二进制文件中. (2认同)