C / C ++: sizeof (short), sizeof (int), sizeof (long), sizeof (long long), etc ... en una máquina de 32 bits frente a una máquina de 64 bits

Estoy ejecutando Windows 7 (64 bits).

Esta pregunta mira la misma pregunta encontrada aquí:

largo en una máquina de 64 bits

pero es más profundo ya que se ocupa de incluso más tipos de datos y se aplica a C o C ++, no a C #. En primer lugar, estoy usando Microsoft Visual Studio Ultimate 2012. Desafortunadamente, mientras que este IDE es compatible con C # y Visual C ++, ya no es compatible con Visual C como parece. De todos modos, he intentado crear el siguiente programa estándar de C ++ en el 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;

}

y como no pude encontrar la opción para ejecutar una aplicación de consola, simplemente coloqué un punto de interrupción en el "retorno 0;" declaración, a fin de ver la salida en la consola. El resultado fue:

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.

Los antiguos libros de texto C indican que int se establece en el "tamaño de palabra", que es 16 en máquinas de 16 bits y 32 en máquinas de 32 bits. Sin embargo, esta regla parece romperse en los sistemas de 64 bits, donde se podría esperar que el "tamaño de la palabra" sea de 64. En cambio, por lo que he leído, estos sistemas son como sistemas de 32 bits, pero tienen mejor soporte para cálculos de 64 bits que sus homólogos de 32 bits lo hicieron. Por lo tanto, los resultados obtenidos del programa C ++ anterior son exactamente los mismos que se obtendrían en un sistema de 32 bits. El tamaño de los tipos de datos (size_t) (que se puede usar para medir la cantidad de memoria ocupada por los objetos en la memoria) también almacena sus valores en 4 bytes, y también es interesante que el tamaño de los punteros utilizados para acceder a las ubicaciones de la memoria (para La instancia sizeof (void *) muestra el número de bits utilizados para almacenar punteros genéricos a cualquier ubicación en la memoria) también tiene una longitud de 32 bits.

Alguien sabe cómo es que Visaul C se eliminó de Visual Studio 2012 y si todavía es posible ejecutar aplicaciones de consola desde Visual Studio 2012 sin tener que establecer un punto de interrupción o leer texto de entrada estándar antes de salir como se indica arriba para que la ventana de la consola pausa antes de cerrar?

Además, ¿es correcta mi interpretación, o tengo algo mal configurado en el IDE para que, por ejemplo, compile para sistemas de 32 bits en lugar de para sistemas de 64 bits? Según uno de los carteles, como mi sistema es de 64 bits, debería ver los resultados descritos aquí para size_t y los punteros:https://en.wikipedia.org/wiki/64-bit_computing#64-bit_data_models&nbsp;Pero no estoy viendo esto. ¿Hay alguna manera de reconfigurar Visual Studio para que pueda admitir un modelo de memoria de 64 bits, en lugar de lo que estoy viendo actualmente en la salida del programa?

Gracias.