1

char 数据类型在 32 位和 C 中 64 位的存储或表示方式有什么区别?

4

2 回答 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 回答