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ź

Musisz się zalogować aby dodać komentarz.