Skip to content

Files

Latest commit

 

History

History
41 lines (27 loc) · 1.25 KB

File metadata and controls

41 lines (27 loc) · 1.25 KB

Problema

4 - Indica o que é mostrado no ecrã pelo seguinte código C#. Justifica a tua resposta.

uint n = uint.MaxValue;
Console.WriteLine(n + 1);

Soluções

Solução 1

O output será 0. O valor máximo do tipo uint é de 4 294 967 296, ao incrementarmos por 1, o valor irá ficar 0 devido a já estarmos no seu valor máximo. Funciona como um ciclo, sempre que um tipo inteiro chega ao seu valor máximo por norma volta ao seu valor mínimo.

Por Sara Gama.

Solução 2

O que é mostrado no ecrã é 0.

A constante uint.MaxValue atribui a n o valor máximo que uma variável de type uint pode ter:4294967295.

Quando são incrementados valores a uma variável que já esteja atribuída com o seu valor máximo é causado um overflow.

Numa situação de overflow a variável em questão retorna ao valor mínimo do seu type, e a incrementação de valores continua daí.

Neste caso portanto temos n = 4294967295; ao incrementarmos 1 valor a n, que é uma variável de type uint, causamos overflow e n toma o valor mínimo do seu type, que é 0.

Logo, no fim da execução do código: n = 0.

Por Rafael Castro e Silva