这是一个有点笼统的问题,与 c 编程语言并不完全相关,但这是我目前正在研究的问题。
为什么一个整数占用 4 个字节或多少字节取决于系统?
为什么每个整数不占用 1 个字节?
例如为什么以下占用8个字节:
int a = 1;
int b = 1;
Run Code Online (Sandbox Code Playgroud)
谢谢
我不确定您是在问为什么int对象具有固定大小而不是可变大小,还是在问为什么int对象具有固定大小。这回答了前者。
我们不希望基本类型具有可变长度。这使得与他们合作变得非常复杂。
我们希望它们具有固定的长度,因为这样更容易生成对它们进行操作的指令。此外,操作会更快。
如果 an 的大小int可变,请考虑执行以下操作时会发生什么:
b = 3;
b += 100000;
scanf("%d", &b);
Run Code Online (Sandbox Code Playgroud)
当b第一次分配,只需要一个字节。然后,当执行加法时,编译器需要更多空间。但是b在内存中可能有邻居,所以编译器不能就地增长。它必须释放旧内存并在某处分配新内存。
然后,当我们执行 时scanf,编译器不知道有多少数据到来。当它读取更多数字时,scanf将不得不做一些非常复杂的工作来b一遍又一遍地增长。而且,当它完成时,它如何让你知道新的b在哪里?编译器必须有某种机制来更新位置b. 这既困难又复杂,并且会导致其他问题。
相比之下,如果b有四个字节的固定大小,这很容易。对于作业,将 3 写入b。对于加法,将 100000 添加到 中的值b并将结果写入b。对于scanf,传递bto的地址scanf并让它将新值写入b。这很简单。
| 归档时间: |
|
| 查看次数: |
1453 次 |
| 最近记录: |