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

时间:2009-10-06 15:55:20

标签: c types 32bit-64bit

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

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:4)

一个可能的区别是字符可能在64位而不是32位边界上对齐。

struct {
  char a;
  char b;
}

可能在32位上占用2 * 4字节,在64位上占用2 * 8字节。

编辑 - 实际上它不会。任何理智的编译器都会重新打包一个只有字节边界字符的结构。但是,如果你添加了'长c;'最终什么都可能发生。这就是为什么a)你有sizeof()和b)你应该小心在c中做手动指针的东西。