Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

julioromano

Questão confusa de certificação

Recommended Posts

Estava eu, estudando para a prova de certificação de PHP, pelo livro indicado pela Zend (Zend PHP Certification Study Guide), quando me deparei com o seguinte exercício:<?php $a = 1; $a = $a- + 1; echo $a;?>Segundo o livro, o resultado disto é 2, pois a expressão "$a-" será executada depois da expressão $a = $a + 1. Então, após a expressão $a = $a + 1, a expressão $a- será perdida.Eu havia respondido que daria 1, pois na minha concepção, a expressão seria realizada da esquerda para a direita, de maneira que $a = $a- + 1, seria o mesmo que $a = $a - 1 (em matemática, aprendi que +1 é o mesmo que 1);Porém, ao fazer isto no computador, o resultado disto é 0.Depois de tudo isto, fiquei completamente confuso, sem entender. Segundo o livro da Zend, que prepara para a certificação, o resultado é 2. Eu achei o resultado 1. No computador, o resultado foi 0.Alguém consegue me explicar isto?GratoJulio Romano

Compartilhar este post


Link para o post
Compartilhar em outros sites

+ com - (mais com nenos) => menos1 - 1 = 0;

concordoporém, segundo o livro da Zend, o resultado disto é 2.alguém consegue me explicar como obter este resultado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para que o resultado seja 2, o código tem que ser:

 

<?php

$a = 1;

$a = $a-- + 1;

echo $a;

?>

 

Há um erro na sua digitação ou na digitação do livro. :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para que o resultado seja 2, o código tem que ser:

 

<?php

$a = 1;

$a = $a-- + 1;

echo $a;

?>

foi assim q eu imaginei o código, porém, a expressão é executada da esquerda para a direita, já que, a precedência de "-" e "+" é a mesma.

Desta forma,

$a = $a-- + 1

seria o mesmo que

$a = $a--;

$a = $a + 1;

o que resultaria 1, não estou certo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Conforme a ordem de precedência em php o operador + seria executado primeiro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Para que o resultado seja 2, o código tem que ser:

 

<?php

$a = 1;

$a = $a-- + 1;

echo $a;

?>

foi assim q eu imaginei o código, porém, a expressão é executada da esquerda para a direita, já que, a precedência de "-" e "+" é a mesma.

Desta forma,

$a = $a-- + 1

seria o mesmo que

$a = $a--;

$a = $a + 1;

o que resultaria 1, não estou certo?

 

Dá forma que o Prog colocou dá 2 mesmo...

Dessa forma o php interpreta o "--" como dois "-" unários...

Deve ser algum erro de digitação da Zend então...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Conforme a ordem de precedência em php o operador + seria executado primeiro.

segundo o php.net, "+" e "-" estão na mesma linha, de forma que não há precedência entre eles, sendo a expressão, executada da esquerda para a direita.

caso fosse "--", a expressão seria realizada da direita para a esquerda, como mostra o php.net, porém, mesmo assim, o resultado da expressão não seria 2.

 

 

 

Para que o resultado seja 2, o código tem que ser:

 

<?php

$a = 1;

$a = $a-- + 1;

echo $a;

?>

foi assim q eu imaginei o código, porém, a expressão é executada da esquerda para a direita, já que, a precedência de "-" e "+" é a mesma.

Desta forma,

$a = $a-- + 1

seria o mesmo que

$a = $a--;

$a = $a + 1;

o que resultaria 1, não estou certo?

 

Dá forma que o Prog colocou dá 2 mesmo...

Dessa forma o php interpreta o "--" como dois "-" unários...

Deve ser algum erro de digitação da Zend então...

 

mas isto:

 

$a = $a-- + 1;

 

não seria o mesmo q isto:

 

$a = $a + 1;

$a = $a--;

 

?

 

desta forma, na primeira linha, $a vale 2, mas na segunda, passa a valer 1, não está certo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não... $a-- eles é chamado de pós-decremento, primeiro ele retorna $a e depois ele decrementa o valor.

 

Tipo de você faz --$a, dae sim... ele decrementa o valor e depois retorna $a...

 

Pelo menos em C é assim, acredito que em PHP tb pelo que testei aqui...

 

Dá uma olhada:

http://br2.php.net/manual/pt_BR/language.o...s.increment.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não... $a-- eles é chamado de pós-decremento, primeiro ele retorna $a e depois ele decrementa o valor.Tipo de você faz --$a, dae sim... ele decrementa o valor e depois retorna $a...Pelo menos em C é assim, acredito que em PHP tb pelo que testei aqui...Dá uma olhada:http://br2.php.net/manual/pt_BR/language.o...s.increment.php

realmente, $a-- primeiro retorna o valor, depois o decrementa, mas isto só teria diferença no caso de:echo $a++;o qual, iria primeiramente imprimir o valor de $a e, depois incrementá-lo.desculpem, mas ainda não estou conseguindo entender este raciocício. estou raciocinando da seguinte forma:$a = 1; //$a vale 1$a = $a-- + 1; // o mesmo que $a = $a + 1; $a--;//$a = $a + 1; aqui, a vale 2//$a = $a--; aqui, a recebe a, então a está valdendo 2, depois a é decrementada, passando a valer 1.echo $a; //apenas imprime o valor, pois todas as outras operações já foram feitas.onde estou errando?

Compartilhar este post


Link para o post
Compartilhar em outros sites

De acordo com o que você escreveu no primeiro post:

 

Segundo o livro, o resultado disto é 2, pois a expressão "$a--" será executada depois da expressão $a = $a + 1. Então, após a expressão $a = $a + 1, a expressão $a-- será perdida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

De acordo com o que você escreveu no primeiro post:

 

Segundo o livro, o resultado disto é 2, pois a expressão "$a--" será executada depois da expressão $a = $a + 1. Então, após a expressão $a = $a + 1, a expressão $a-- será perdida.

mas por qual motivo a expressão $a-- é perdida, e não é executada?

Compartilhar este post


Link para o post
Compartilhar em outros sites

opaagora entendino caso de $a--, e não $a- (erro de digitação da Zend), isto resulta 2 mesmo!mas, como eu havia lido ($a-), não daria 2 de jeito nenhum!hehehehehobrigado pessoal

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.