1

charデータ型が32ビットで保存または表現される方法とCで64ビットで表現される方法の違いは何ですか?

4

2 に答える 2

8

違いはありません。
1文字が1バイトを占めます。
1バイトには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

考えられる違いの 1 つは、文字が 32 ビット境界ではなく 64 ビット境界で整列される可能性があることです。

struct {
  char a;
  char b;
}

32 ビットでは 2 * 4 バイト、64 ビットでは 2 * 8 バイトを占める場合があります。

編集 - 実際にはそうではありません。健全なコンパイラは、バイト境界に文字のみを含む構造体を再パックします。ただし、「long c;」を追加した場合 最終的には何でも起こり得る。そのため、a) sizeof() があり、b) c で手動ポインターを使用する場合は注意が必要です。

于 2009-10-06T16:01:32.320 に答える