Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Dúvida no Ex. 4 da Aula 2 - Variáveis e fluxo

Neste código, qual seria a diferença do ++i para o i++ ao incrementar a variável? O resultado apresentado é o mesmo após a execução do código.

class SomaMil {
public static void main(String[] args) {

    int i = 1;
    int soma = 0;
while (i<=1000) {
    soma = soma + i;
    ++i;
    System.out.println (soma);
    }
}
}
5 respostas

Para este código não há diferença.

A diferença estaria em um código como:

public class Teste{

public static void main(String[] args){

int i = 0;

if(i++ == 0) System.out.println("Incremento feito depois da comparacao"); else System.out.println("Incremento feito antes da comparacao");

if(++i == 0) System.out.println("Incremento feito depois da comparacao"); else System.out.println("Incremento feito antes da comparacao");

} }

O resultado será:

Incremento feito depois da comparacao Incremento feito antes da comparacao

ou seja, no primeiro caso, primeiro será executado o i == 0 e depois será feito o i++

solução!

Olá Gabriel! Veja bem a diferença está quanto a leitura da variável. Em ++i primeiro é adicionado 1 à variavel para depois se ler o valor desta. Já em i++ primeiro é lido o valor da variável para depois incrementar 1 a esta.

Se você fizer:

        int i = 1;
        System.out.println(++i);
        System.out.println(i++);
        System.out.println(i);

Verá que sairá no console o resultado:

2
2
3

Por que? Veja bem, a variável i tem valor inicial 1. Quando ela chega no primeiro System.out.println() eu incrementei 1 antes de ler a variável para imprimir, assim foi impresso 2. No entanto, no segundo System.out.println() eu li primeiro a variável para depois incrementar 1 a ela, então foi impresso 2 pois ela foi lida primeiro. Já no terceiro System.out.println() eu imprimir o valor da variável, veja que foi 3 pois ela foi incrementada após ter sido lida no segundo System.out.println()

Bem, espero ter ajudado! Bons Estudos!

Para este código não há diferença.

A diferença estaria em um código como:

public class Teste{

    public static void main(String[] args){

        int i = 0;

        if(i++ == 0)
            System.out.println("Incremento feito depois da comparacao");
        else
            System.out.println("Incremento feito antes da comparacao");

        if(++i == 0)
            System.out.println("Incremento feito depois da comparacao");
        else
            System.out.println("Incremento feito antes da comparacao");


    }
}

O resultado será:

Incremento feito depois da comparacao Incremento feito antes da comparacao

ou seja, no primeiro caso, primeiro será executado o i == 0 e depois será feito o i++

De forma simples:

você perceberá a diferença somente quando estiver utilizando o valor de i no mesmo momento (mesma linha) que realiza o incremento.

Ex.

int i = 0 int numero = i++ // nesse caso numero = 0

int i = 0 int numero = ++i // nesse caso numero = 1

Respondendo diretamente

++i = pre incremento

i++ = pós incremento