C / C ++: sizeof (short), sizeof (int), sizeof (long), sizeof (long long) и т. Д.… На 32-битной машине по сравнению с 64-битной машиной

м под управлением Windows 7 (64-разрядная версия).

Этот вопрос выглядит на тот же вопрос, найденный здесь:

долго на 64 битной машине

но более углубленный, поскольку он имеет дело с еще большим количеством типов данных и применяется к C или C ++, а не к C #. Прежде всего, я использую Microsoft Visual Studio Ultimate 2012. К сожалению, хотя эта IDE поддерживает C # и Visual C ++, она больше не поддерживает простой старый Visual C. Во всяком случае, ямы попытались создать следующую стандартную программу C ++ в IDE:

#include 

int main(int argc, char **argv) {

  printf("sizeof(short): %d\n", (int) sizeof(short));

  printf("sizeof(int): %d\n", (int) sizeof(int));

  printf("sizeof(long): %d\n", (int) sizeof(long));

  printf("sizeof(long long): %d\n", (int) sizeof(long long));

  printf("sizeof(size_t): %d\n", (int) sizeof(size_t));

  printf("sizeof(void *): %d\n", (int) sizeof(void *));

  printf("Hit enter to exit.\n");

  char *scannedText;

  scanf("%s", &scannedText);

  return 0;

}

и так как я не могне могу найти вариант запуска консольного приложения, я просто установил точку останова на "вернуть 0; " заявление, чтобы просмотреть вывод в консоли. Результат был:

sizeof(short): %d\n", 4
sizeof(int): %d\n", 4
sizeof(long): %d\n", 4
sizeof(long long): 8
sizeof(size_t): 4
sizeof(void *): 4
Hit enter to exit.

Старые учебники C утверждают, что для int установлено значение "размер слова ", что составляет 16 на 16-битных машинах и 32 на 32-битных машинах. Однако это правило нарушается в 64-битных системах, где можно ожидать "размер слова " быть 64. Вместо того, что яМы читаем, что эти системы похожи на 32-битные системы, но лучше поддерживают 64-битные вычисления, чем их 32-битные аналоги. Следовательно, результаты, полученные из вышеуказанной программы на C ++, точно такие же, как и в 32-битной системе. Размер типов данных (size_t) (который может использоваться для измерения объема памяти, занимаемой объектами в памяти) также хранит свои значения в 4 байтах, и также интересно, что размер указателей, используемых для доступа к ячейкам памяти (для Экземпляр sizeof (void *) показывает количество битов, используемых для хранения общих указателей на любое место в памяти), также длиной 32 бита.

Любой знает, почему Visaul C был удален из Visual Studio 2012 и можно ли по-прежнему запускать консольные приложения из Visual Studio 2012 без необходимости устанавливать точку останова или читать текст из стандартного ввода перед выходом, как описано выше, чтобы окно консоли могло пауза перед закрытием?

Кроме того, верна ли моя интерпретация, или у меня что-то неправильно настроено в IDE, так что, например, он компилируется для 32-битных, а не для 64-битных систем? Согласно одному из авторов, поскольку моя система 64-битная, я должен увидеть результаты, описанные здесь для size_t и указателей:https://en.wikipedia.org/wiki/64-bit_computing#64-bit_data_models но я этого не вижу. Есть ли способ перенастроить Visual Studio, чтобы он мог поддерживать 64-битную модель памяти, в отличие от того, что я сейчас вижу в программе?выходной?

Благодарю.

Ответы на вопрос(1)

Ваш ответ на вопрос