Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]print(1), zagadka
L0k0
post
Post #1





Grupa: Zarejestrowani
Postów: 161
Pomógł: 4
Dołączył: 18.03.2011

Ostrzeżenie: (0%)
-----


Witam!

Programuję już trochę ale dziś zobaczyłem coś dość dziwnego. Będąc w zaprzyjaźnionej firmie kolega zadał mi pytanie:

Jaki jest wynik działania funkcji:
  1. echo '1'.(print'2')+3;


W pierwszym momencie pomyślałem o błędzie (string + int ...). Jednak okazało się, że wynikiem jest... 214.

Wróciłem do domu, sprawdziłem i rzeczywiście. Co dziwniejsze, okazało się ,że funkcja print działa 'dziwnie' i nie mogę za bardzo namierzyć w necie dlaczego.

Otóż dla
wynikiem jest... 11, dla
  1. echo print('1');
również! W ogóle dla stringów daje mi 11 a dla int'ów int + 1 (dla 2 jest to 21).

O co z tym chodzi?

Pozdrawiam!

Ten post edytował L0k0 2.04.2014, 14:58:52
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
vonski
post
Post #2





Grupa: Zarejestrowani
Postów: 292
Pomógł: 89
Dołączył: 27.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


To jest jedno z przykładowych pytań, niekoniecznie trafisz na nie na egzaminie, aczkolwiek jest to możliwe.
Jeśli chodzi o wykorzystanie w praktyce, to raczej sam kod taki jak:

  1. echo '1'.(print'2')+3;


na niewiele się przyda. Natomiast widzieć dlaczego to pokazuje "214" już jak najbardziej warto, bo pytanie sprawdza tak naprawdę kilka rzeczy. Kolejność operatorów, rzutowanie, znajomość konstrukcji print(), co się dzieje kiedy chcemy wyprintować printowany tekst (nie wiem jak to inaczej napisać (IMG:style_emoticons/default/smile.gif) chodzi mi o: echo print 'costam').
Jeśli chodzi o zastosowanie faktu, że print można użyć w wyrażeniu, to np. taki przykład przychodzi mi do głowy:

  1. ($a == $b) ? print 'rowne' : print 'nierowne';


w powyższym print zadziała, echo wywali błąd.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 19:04