2012-12-06 23:47:35

Kto trafił szóstkę?

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
?>

Tagi: , , ,

Dodaj odpowiedź