Poprzedni artykuł zakończyłem krótkim zadaniem. Prosiłem o policzenie, bez wykonywania tego kodu na serwerze, jaką liczbę wyświetli poniższy kod.
<?php $a=8; echo $a--+5*--$a+3*$a--+$a++-2*$a; ?> |
Nie kwapiliście się specjalnie z odpowiedziami. Nie wiem, czy to brak pewności siebie, by ujawnić swoje obliczenia, czy niechęć do liczenia czegokolwiek. Fakty są takie, że 3 osoby podały 5 odpowiedzi, a żadna z nich nie była poprawna. W związku z tym postanowiłem wyjaśnić ten, przyznam że podchwytliwy, przykład. W tym celu rozbiję obliczenia na kilka kolejnych etapów, z których każdy opatrzę komentarzem. Dla przypomnienia: ++ zwiększa wartość zmiennej o 1, –– zmniejsza. Operator przed zmienną zmienia jej wartość przed jej użyciem, za zmienną po jej użyciu
<?php $a=8; echo $a--; //W tej linii operator zmniejsza wartość zmiennej o 1, ale po jej użyciu. //$a jest równe 7, ale użyte w instrukcji (wyświetlone) było 8 //(operator za zmienną). $a=8; echo $a--+5*--$a; //Do 8 dodajemy 5*6. Wartość zmiennej $a została ponownie zmniejszona. //Tym razem przed jej użyciem (operator przed zmienną). Instrukcja wyświetli 38 $a=8; echo $a--+5*--$a+3*$a--; //Do 38 dodajemy 3*6, ale $a równe jest 5. Użyta była wartość przed //zmniejszeniem (operator za zmienną). Instrukcja wyświetli 56 $a=8; echo $a--+5*--$a+3*$a--+$a++; //Do 56 dodajemy poprzednią wartość $a czyli 5, a następnie //zwiększamy ją o 1 (operator za zmienną). Instrukcja wyświetli 61 $a=8; echo $a--+5*--$a+3*$a--+$a++-2*$a; //Od 61 odejmujemy 2*6. Instrukcja wyświetli 49 ?> |