O que acontece quando tentamos armazenar um valor muito grande para uma variável do tipo int? Mostre com código.
int a = 2147483647; // Valor máximo para um int
a = a + 1; // Extrapolando o valor máximo
printf(
int a = 2147483647; // Valor máximo para um int
a = a + 1; // Extrapolando o valor máximo
printf(
Passo 1
Vamos entender o que a questão está pedindo. Você quer saber o que acontece quando tentamos armazenar um valor muito grande em uma variável do tipo
int
em C. Para isso, vamos usar o código que você forneceu e explorar o conceito de overflow de inteiros, que é quando um valor excede o limite máximo que uma variável pode armazenar.Passo 2
Primeiro, vamos olhar para o valor atribuído à variável
a
:int a = 2147483647; // Valor máximo para um int
Aqui,
2147483647
é o maior número que um int
pode armazenar em muitas linguagens de programação que usam 32 bits para inteiros. Esse valor é conhecido como INT_MAX.Passo 3
Em seguida, tentamos adicionar 1 a esse valor:
a = a + 1; // Extrapolando o valor máximo
Quando fazemos isso, estamos tentando atribuir um valor que excede o limite máximo que a variável
int
pode suportar. Isso causa o que chamamos de overflow.Passo 4
Na maioria dos sistemas que usam representação em complemento de dois para números inteiros, adicionar 1 ao
INT_MAX
faz com que o valor “dê a volta” e se torne o valor mínimo que um int
pode armazenar, que é -2147483648
(conhecido como INT_MIN).Passo 5
Então, quando executamos o
printf
para exibir o valor de a
após a adição, ele mostrará esse valor “dado a volta”:printf("%d", a); // Isso vai imprimir -2147483648
Resposta
Após a operação, o valor de
a
será -2147483648.