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

时间:2011-10-09 03:43:39

标签: c double decimal

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位。

2 个答案:

答案 0 :(得分:5)

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

因此double可能是8 * 8 = 64位。

编辑:

sizeof()运算符以字节生成对象的大小。

“字节”的定义是char的大小。 (这就是C标准定义单词“byte”的方式;它在其他情境中可能有不同的含义。)

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

答案 1 :(得分:2)

非常迂腐sizeofsizeof char的倍数返回操作数的大小。

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