【发布时间】:2018-01-26 09:36:38
【问题描述】:
我知道整数数据类型占用 2 或 4 个字节的内存。我想知道,如果int数据类型变量值的值小于,那是不是空间浪费了?
#include <stdio.h>
int main(void)
{
int a=1;
printf("%d\n",a);
}
二进制值是 00000001,即 1 个字节, int 数据类型为 a 值分配了 2 个字节的空间。剩余的 1 个字节被浪费了吗?
【问题讨论】:
-
“我知道整数数据类型占用 2 或 4 个字节的内存。” 你不知道有什么问题。在某些系统上,一个 int 需要 8 个字节。不要沉迷于“全世界的盒子都像我的盒子”。
-
除非您的目标是内存有限的嵌入式系统,否则这真的很重要吗?如果将来程序需要处理更大的值怎么办?您可能想对 the Y2K "crisis" 进行一些研究,因为上个世纪的程序员想要节省几个字节而对未来没有太多考虑。
-
int占用的空间是sizeof(int)(现在通常为 4 或 8 个字节,有时仍为 2 个字节,甚至可能是其他字节,这取决于平台)。您的a变量稍后可能会设置为更大的值,因此不会浪费任何东西。 -
@MichaelWalz 有趣的是,曾经有一个 CHAR_BIT == 16 和 sizeof(int) == sizeof(short) == sizeof(char) == 1 的系统(TI DSP)...跨度>