Skip to content

Instantly share code, notes, and snippets.

@mathmotta
Created May 27, 2020 23:25
Show Gist options
  • Save mathmotta/feeda713b400493edd996aa58cd068ce to your computer and use it in GitHub Desktop.
Save mathmotta/feeda713b400493edd996aa58cd068ce to your computer and use it in GitHub Desktop.
Exercícios sobre Tipos Primitivos

Exercícios

  1. O código abaixo compila?
short idade = 20;
long idadeGrande = idade;
  1. Variáveis do tipo int e float tem um tamanho de 32 bits, portanto converter valores float para int pode ser feito implicitamente. Essa afirmação é verdadeira ou falsa?

  2. O que acontece se fizermos uma conversão explícita de um valor não suportado? Por exemplo:

long valorGrandeDemais = 9223372036854775807;
int valorMenor = (int) valorGrandeDemais;

Qual seria o resultado ao tentar rodar esse código? A) Erro de compilação. Esse valor é grande demais para caber num int. B) Compila e não gera erros, mas por não conseguir armazenar o número numa variável int, é passada então o valor "-1" para a variável "valorMenor". C) O código compila, mas vai gerar um erro quando ele tentar fazer essa conversão. D) Compila, não gera erros, e o valor é guardado sem problema nenhum na variável int.

Se não souber a resposta, tente rodar o código e descubra por si próprio!

  1. (Para pesquisar) Variáveis do tipo char são interessantes. Elas representam números inteiros positivos até 65535, o que significa que se fizermos esse código:
ushort valorPequeno = 65;
char charDeValorPequeno = (char)valorPequeno;
Console.Out.WriteLine("Valor do Char " + charDeValorPequeno);

Ele compila normalmente! Mas se então rodarmos o código, temos o resultado

Valor do Char: A

Mas o valor não era 65? O que aconteceu aqui?

Gabarito

Só veja o gabarito após terminar os exercícios
  1. Resposta: Sim. Tipos short tem tamanho menor que long e portanto a conversão implícita é possível.

  2. Resposta: Falsa. É possível fazer uma conversão implícita de int para float, mas não o contrário. Isso é porque todo valor inteiro de um int cabe num float, mas os valores quebrados/decimais de um float não cabem num int. Portanto, apesar de eles terem o mesmo tamanho em memória, é impossível converter implícitamente. É possível, porém, fazer a conversão explícita, como por exemplo:

float pi = 3.14f;
int piInteiro = (int)pi;

Apenas a parte inteira do valor float iria ser guardada na variável int. No caso, 3.

  1. Resposta: Letra B, compila e não gera erros, mas o valor guardado no int é -1. O número é grande demais para caber num int, então, para não gerar erro, o compilador passa o valor -1.

  2. Resposta: Variáveis do tipo char representam diretamente caracteres do conjunto Unicode. Cada número que um char suporta um caracter. No caso, o número 65 representa a letra A maiúscula.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment