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位。
答案 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)
非常迂腐sizeof
以sizeof char
的倍数返回操作数的大小。
在所有常见平台上,这意味着sizeof
以字节为单位返回。