Ir para conteúdo
Fórum Script Brasil
  • 0

Operadores de Incremento/Decremento


Filipex27

Pergunta

Pessoal estou com uma seria duvida na cabeça, sou iniciante programador em php. E não tenho MUITO conhecimento.

então minha duvida é nos operadores de Incremento E Decremento, "++" "--".

Fica meio dicicil de explicar minha duvida, mais acho q deu para entender.

Eu vi em um tutorial um codigo assim:

<?php
$a=3;
$b=2;
$s=(++a) + $b;
echo "$a, $b, $s";
?>

Quero saber porque o resultado deu nisto: 4, 2, 6.

Eu concordo q o valor da variavel $s, seja 6 por que, no codigo o valor da variavel $a é 4 porque estar pre-incrementando 3 + 1 =4 que soma com a variavel $b que é 2, 4+2 =6, até ai eu entendi.

Mais a minha duvida é q porque o valor da variavel $a, sai 4, sendo q ela "pura" sem incrementar nada é 3, então o resultado tinha q sair 3, so sairia 4, quando incrementava, o que tinha acontecido na variavel $s, mais na variavel $a so ela, o valor original é 4.

E que também mim explicasse o que é incrementar e decrementar, e a diferença de pre incrementar e pos incrementar, estou com serias dificuldades neste assunto.

Obrigado pela atenção. Ficaria muito grato pela ajuda!.

Editado por Jonathan Queiroz
Remover palavra "dúvida" do título do tópico e adcionar tag's (Jonathan)
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Ao incrementar ou decrementar uma variável, o valor dela é modificado.

Se o objetivo fosse que a variável c fosse (a+1) + b, sem modificar o valor de a, o código deveria ser escrito assim:

$c=$a+1+$b;
Já a diferença entre pré-incrementar e pós-incrementar está no momento em que é feito esse incremento
$a=5;
$b=3;
$c=($a++)+$b;
echo "A = $a\nB = $b\nC  $c";
Resultado:
A = 6 B = 3 C = 8
Observe agora o seguinte código:
$a=5;
$b=3;
$c=(++$a)+$b;
echo "A = $a\nB = $b\nC  $c";

Resultado:

A = 6

B = 3

C = 9

A diferença entre os dois código é que no primeiro o que ocorre é o seguinte:

  • No primeiro código, atribui-se à variável c o valor de a, incrementa a (a incrementação ocorre após atribuir o valor de c) e depois soma ao valor de b
  • No segundo código, incrementa-se a, atribui o valor de a (já incrementado) à variável c e soma-se o valor de b
Link para o comentário
Compartilhar em outros sites

  • 0
Pessoal estou com uma seria duvida na cabeça, sou iniciante programador em php. E não tenho MUITO conhecimento.

então minha duvida é nos operadores de Incremento E Decremento, "++" "--".

Bom amigão, em qualquer linguagem que trabalha com esses operadores o funcionamento é o seguinte:

Os operadores de incremento e decremento podem ser de prefixo e de sufixo, os de prefixo têm prioridade na operação (ocorrem antes das outras operações):

$a = 2;
$b = 1;
$c = ++$a + $b;

var_dump( array( $a , $b , $c ) );
O código acima vai produzir:
array(3) {
    [0]=>
        int(3)
    [1]=>
        int(1)
    [2]=>
        int(4)
}
Isso porque a prioridade foi dada ao operador de incremento de prefixo, ou seja: Defina a variável $c com o valor incrementado de $a somado ao valor de $b Porém os operadores de incremento de sufixo ocorrem depois da expressão ser interpretada:
$a = 2;
$b = 1;
$c = $a++ + $b;

var_dump( array( $a , $b , $c ) );
O código acima irá produzir:
array(3) {
    [0]=>
        int(3)
    [1]=>
        int(1)
    [2]=>
        int(3)
}
Ou seja: Defina a variável $c com o valor da variável $a somado ao valor da variável $b, somente então incremente a variável $a Um exemplo legal é o próximo:
$a = 2;
$b = 1;
$c = $a++ + $b - $a;

var_dump( array( $a , $b , $c ) );
Você pode pensar: "Bom, se $a++ + $b resultou em 3 e $a vale 2 e $b vale 1, então $3 menos o valor de $a que é 2 resultará em 1" Porém, como a operação onde o operador de incremento de sufixo tem preferência já terminou então significa que o escopo da operação já é outro, no caso a definição da variável $c é: Defina a variável $c com o valor da soma entra $a e $b, incremente $a e então subtraia do total o novo valor de $a, em partes: $c = $a + $b; //2 + 1 => 3 $a = $a + 1; //2 + 1 => 3 $c = $c - $a; //3 - 3 => 0
array(3) {
    [0]=>
        int(3)
    [1]=>
        int(1)
    [2]=>
        int(0)
}

[]'s

J. Neto

Editado por neto.joaobatista
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...