#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
short int myShortVar;
short int *ptrShort;
char myCharVar;
void *ptrVoid;
unsigned short int myVar=0x2710; // 0x2710 =10000 decimal
char *ptrLow=(char*)&myVar;
char *ptrHigh=((char *)&myVar+1);
printf("El tama¤o de char es %d\n", sizeof(char));
printf("El tama¤o de unsigned char es %d\n", sizeof(unsigned char));
printf("El tama¤o de short int es %d\n", sizeof(myShortVar));
printf("El tama¤o de int es %d\n", sizeof(int));
printf("El tama¤o de long es %d\n", sizeof(long));
printf("El tama¤o de float es %d\n", sizeof(float));
printf("El tama¤o de double es %d\n", sizeof(double));
printf("\n");
printf("El tama¤o de ptrShort es %d\n", sizeof(ptrShort));
printf("El tama¤o de ptrVoid es %d\n", sizeof(ptrVoid));
printf("\n");
printf("\n");
printf("El tama¤o de unsigned short int myVar en bytes es: %d\n",sizeof(myVar));
printf("la direcci¢n de myVar en HEX es: %X\n", &myVar);
printf("la direcci¢n de myVar en DEC es: %d\n", &myVar);
printf("contenido de la Variable myVar en HEX: %X\n", myVar);
printf("contenido de la Variable myVar en DEC: %u\n",myVar);
printf("\n");
printf("El tama¤o de ptrLow es %d\n", sizeof(ptrLow));
printf("la direcci¢n de ptrLow en HEX es: %X\n", &ptrLow);
printf("la direcci¢n de ptrLow en DEC es: %d\n", &ptrLow);
printf("direcci¢n a donde apunta ptrLow en HEX es: %X\n", ptrLow);
printf("direcci¢n a donde apunta ptrLow en DEC es: %d\n", ptrLow);
printf("contenido de la variable a donde apunta ptrLow en HEX es: %X\n", *ptrLow);
printf("contenido de la variable a donde apunta ptrLow en DEC es: %u\n", *ptrLow);
printf("\n");
printf("El tama¤o de ptrHigh es %d\n", sizeof(ptrLow));
printf("la direccion de ptrHigh en HEX es: %X\n", &ptrHigh);
printf("la direccion de ptrHigh en DEC es: %d\n", &ptrHigh);
printf("direcci¢n a donde apunta ptrHigh en HEX es: %X\n", ptrHigh);
printf("direcci¢n a donde apunta ptrHigh en DEC es: %d\n", ptrHigh);
printf("contenido de la variable a donde apunta ptrHigh en HEX es: %X\n", *ptrHigh);
printf("contenido de la variable a donde apunta ptrHigh en DEC es: %d\n", *ptrHigh);
printf("\n");
cin.get();
*((char *)&myVar) = 0x10;
*((char *)&myVar+1) = 0x27;
cout << "contenido de la Variable myVar en hex: " <<hex << myVar << endl << endl;
cout << "contenido de la Variable myVar en decimal: " << dec << myVar << endl << endl;
cin.get();
cout << "contenido del nible alto de la Variable myVar: " << hex << (myVar >> 8) << endl << endl;
cout << "contenido del nible bajo de la Variable myVar: " << hex << (myVar & 0xff) << endl << endl;
cout << "muestra contenido de ptrLow que apunta a myVar: " << hex << *ptrLow << endl << endl;
cout << "muestra contenido de ptrHigh que apunta a myVar: " << hex << *ptrHigh << endl << endl;
printf("contenido de la variable a donde apunta ptrLow en HEX es: %X\n", *ptrLow);
printf("contenido de la variable a donde apunta ptrLow en DEC es: %u\n", *ptrLow);
printf("\n");
printf("contenido de la variable a donde apunta ptrHigh en HEX es: %X\n", *ptrHigh);
printf("contenido de la variable a donde apunta ptrHigh en DEC es: %u\n", *ptrHigh);
printf("\n");
system("PAUSE");
return EXIT_SUCCESS;
}