4.13. Qual a diferença (se existir) entre as duas seguintes instruções: x=++i e x=i++? Dê exemplos.

Passo 1

Vamos para mais uma.

Nesse caso a gente tem duas instruções. A primeira instrução é:

x = + + i

Então a gente tem a variável x , e vamos atribuir o valor de i já incrementado, é isso que estamos fazendo com essa linha.

Um exemplo de programa é:

# i n c l u d e   < s t d i o . h >

v o i d   m a i n   ( )

{

i n t   i = 1 , x ;

        x = + + i ;

        p r i n t f ( " o   v a l o r   d e   x   :   % d   ;   o   v a l o r   d e   i   :   % d " ,   x ,   i ) ;        

r e t u r n ;

}

A saída para um programa desse tipo é:

o   v a l o r   d e   x   :   2   ;   o   v a l o r   d e   i   :   2

Passo 2

Agora quando a gente escreve do outro jeito, primeiro atribuimos o valor de x e só depois adicionamos o incremento. Isso quer dizer que x e i vão ter valores diferentes.

A gente pode usar um exemplo bem parecido:

# i n c l u d e   < s t d i o . h >

v o i d   m a i n   ( )

{

i n t   i = 1 , x ;

        x = i + + ;

        p r i n t f ( " o   v a l o r   d e   x   :   % d   ;   o   v a l o r   d e   i   :   % d " ,   x ,   i ) ;        

r e t u r n ;

}

A saída para um programa desse tipo é:

o   v a l o r   d e   x   :   1   ;   o   v a l o r   d e   i   :   2

Resposta

Quando escrevemos x = + + i ; estamos atribuindo a x o valor de i já incrementado.

Quando escrevemos x = i + + ; estamos atribuindo a x o valor de i e depois incrementando a variável i .