В чем разница между тем, как тип данных char хранится или представляется в 32-битной версии по сравнению с 64-битной в C? - PullRequest
1 голос
/ 06 октября 2009

В чем разница между тем, как тип данных char хранится или представляется в 32-битных и 64-битных в C?

Ответы [ 2 ]

8 голосов
/ 06 октября 2009

Разницы нет.
Один символ занимает один байт.
Один байт имеет биты 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;
}
4 голосов
/ 06 октября 2009

Одно из возможных отличий состоит в том, что символы могут быть выровнены на 64-битных, а не на 32-битных границах.

struct {
  char a;
  char b;
}

Может занимать 2 * 4 байта на 32-битной и 2 * 8 байтов на 64-битной.

редактировать - на самом деле это не так. Любой здравомыслящий компилятор будет перепаковывать структуру только с символами на границе байта. Однако, если вы добавили 'long c;' в конце концов все может случиться. Вот почему а) у вас есть sizeof () и б) вы должны быть осторожны, выполняя ручные указатели в c.

...