char 数据类型在 32 位和 C 中 64 位的存储或表示方式有什么区别?
问问题
366 次
2 回答
8
没有区别。
一个字符占用一个字节。
一个字节有 CHAR_BIT 位。
#include <limits.h>
#include <stdio.h>
int main(void) {
printf("a char occupies 1 byte of %d bits.\n", CHAR_BIT);
return 0;
}
于 2009-10-06T15:56:39.417 回答
4
一种可能的区别是字符可能在 64 位而不是 32 位边界上对齐。
struct {
char a;
char b;
}
在 32 位上可能占用 2 * 4 字节,在 64 位上可能占用 2 * 8 字节。
编辑 - 实际上它不会。任何理智的编译器都会重新打包一个只有字节边界上的字符的结构。但是,如果您添加了“long c;” 最终任何事情都有可能发生。这就是为什么a)你有sizeof()和b)你应该小心在c中做手动指针的东西。
于 2009-10-06T16:01:32.320 回答