【发布时间】:2010-12-04 08:00:09
【问题描述】:
char 数据类型在 32 位和 C 中 64 位的存储或表示方式有什么区别?
【问题讨论】:
标签: c types 32bit-64bit
char 数据类型在 32 位和 C 中 64 位的存储或表示方式有什么区别?
【问题讨论】:
标签: c types 32bit-64bit
没有区别。
一个字符占用一个字节。
一个字节有 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;
}
【讨论】:
sizeof(char) 始终为 1。sizeof(char *) 是完全不同的野兽。
一个可能的区别是字符可能在 64 位而不是 32 位边界上对齐。
struct {
char a;
char b;
}
在 32 位上可能占用 2 * 4 个字节,在 64 位上可能占用 2 * 8 个字节。
edit - 实际上它不会。任何理智的编译器都会重新打包一个只有字节边界上的字符的结构。但是,如果您添加了“long c;”最终任何事情都有可能发生。这就是为什么 a) 你有 sizeof() 和 b) 你应该小心在 c 中做手动指针的东西。
【讨论】: