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 <cstdio>

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;

}

и так как я не смог найти опцию для запуска консольного приложения, я просто установил точку останова в «return 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.

Старые учебники по Си утверждают, что для 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)

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