C如何在8位槽中存储双十进制?
#include "stdio.h"
main(){
double x = 123.456;
printf("\n %d - %e \n",sizeof(x),x);
}输出:
8 - 23.456X的值是正确的,是123.456,但假设它只有8位。
发布于 2011-10-09 11:44:29
那不是8位。它是8个字节。并且每个字节至少是8位(并且通常恰好是8位)。
因此,对于double来说,它可能是8*8=64位。
编辑:
sizeof()运算符以字节为单位得出对象的大小。
根据定义,“字节”是char的大小。(这就是C标准对单词“byte”的定义;它在其他上下文中可能有不同的含义。)
字节中的位数由<limits.h>中定义的宏CHAR_BIT指定。您可能遇到的几乎任何系统都会有CHAR_BIT == 8,但我知道一些DSP(数字信号处理器)的实现将CHAR_BIT设置为16或32。
发布于 2011-10-09 11:52:09
可怕的是,sizeof返回的操作数大小是sizeof char的倍数。
在所有常见平台上,这意味着sizeof以字节为单位返回。
https://stackoverflow.com/questions/7701325
复制相似问题