Neste laboratório, veremos a representação de dados na linguagem C. Para isso, utilizaremos alguns programas em C e o compilador gcc. A seguir, serão descritos os passos a serem seguidos para realização deste laboratório:
cd diretório
gcc -o <nome_do_executavel> <nome_do_arquivo_fonte>
#include "stdio.h"
int main (void) {
  int x = 100;
  printf("%d  %x  %u  %c  %o\n", x, x, x, x, x);
  return 0;
}
O comando printf em C, imprime um dado de acordo com uma certa formatação,
dada pelo caracter %letra. No caso acima, %d imprime o 
valor da variável x 
interpretando-a com um inteiro com sinal, %x imprime o padrão de bits da 
variável com um inteiro sem sinal expresso em hexadecimal (base 16), %u a imprime  
como um inteiro sem sinal na base 10, %c, como um caracter e 
%o, como um número sem sinal em octal (base 8).
Pergunta 1: Dado que o valor da variável é 100, indique como este valor deve ser impresso pelo programa utilizando as formatações do programa. Para verificar o caracter a ser impresso consulte a tabela ASCII .
Pergunta 2: Compile e execute este programa e indique se as respostas que você encontrou são as mesmas do programa.
Para compilar o seu programa você deve digitar o seguinte comando:  gcc -o reprint reprint.c  
Para executar o seu programa você deve digitar o nome do seu programa executável reprint na linha de comando. 
Pergunta 3: Indique os valores que você espera que sejam impresssos. Gere um novo executável, execute-o e indique se os resultados foram os esperados.
Para mudar o valor para -100, você terá que editá-lo. A seguir, compile e execute o programa novamente executando os passos acima.
#include "stdio.h"
int main (void) {
   printf("%d\n", sizeof(int));
   return 0;
}
A função sizeof() em C indica o número de bytes utilizado 
para representar cada tipo existente. O programa acima quando executado
indicará o número de bytes utilizado para representação da variável
quando ela é do tipo int.
Pergunta 4: Indique o tamanho utilizado para o tipo int, compilando e executando este programa.
Pergunta 5: Troque o parâmetro da função por short int e indique o novo tamanho. Faça isso, para os tipos char, float e double.
#include "stdio.h"
void dump (void *p, int n) {
  unsigned char *p1 = p;
  while (n--) {
    printf("Endereco %p - %02x\n", p1, *p1);
    p1++;
  }
}
int main (void) {
  int i = 16;
  dump(&i, sizeof(i));
  return 0;
}
Em cada endereço de memória, é armazenado um byte do dado.
Caso um dado necessite de 4 bytes, teremos 4 endereços.
O programa acima mostra como um dado do tipo int é armazenado na
memória. Compile e execute o  programa vermem.c.
 Pergunta 6: 
Indique como este dado está armazenado na memória.
 Pergunta 7: 
Troque o dado para -16, compile e execute o arquivo novamente.
Indique como o novo valor está armazenado na memória.
 Pergunta 8: 
Execute o mesmo procedimento, trocando o tipo para short int, 
character e float.
#include "stdio.h"
int main (void) {
   short int i = 32767;
   i = i+1;
   printf("%d \n", i);
   return 0;
}
 Pergunta 9: 
O resultado é o que você esperava? Porque ?
 Pergunta 10: 
Troque o tipo da variável i para int, compile e execute o 
programa novamente. Mudou alguma coisa ? Explique o que está
acontecendo.
Algoritmos dos programas