我正在学习汇编(针对 MIPS),我知道每个内存调用都会带来一个 32 位字。我还知道 C 中有些数据类型不需要 32 位。例如,char 只需要 8 位内存,而 int 则需要 16 位。所以我的问题是C中的char在内存中使用32位吗?还是只有8位?如果它只有 8 位,如果 CPU 从内存加载一个包含 char 的地址,它不会收到 32 位字吗?我对此有点困惑,因为我总是被告知所有内容都以 32 位字的形式存储在内存中。
一方面,将字符存储在 8 位 block 上是有意义的,这样可以节省空间。
最佳答案
你被误导了。 MIPS 是一种字节寻址 CPU,因此内存的每个“单元”仅保存 8 位。每条读(或写)指令一次可以访问 1、2 或 4 个字节,从而访问 8、16 或 32 位(在 MIPS32 上——使用 MIPS64,您还可以在单次读或访问中访问 8 字节/64 位)写)。
关于c - C如何在内存中存储不同的数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37200181/