![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 292 Pomógł: 89 Dołączył: 27.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Przerabiam sobie właśnie książeczkę z przykładowymi testami do ZCE i natrafiłem na pewną niejasność. Jest takie pytnianie: What will the following script output? Prawidłowa odpowiedź to: 245 Zgadza się, z tym że wyjaśnienie już jest dla mnie nie do końca jasne: The concatenation operator has a higher precenedce than the addition operator. Therefore, PHP will interpret this expression as if it were written ('Testing' . 1) + (2 . '45'). I tutaj mam wątpliwości, bo wg manuala obydwa te operatory mają taki sam priorytet i decyduje kolejność ich występowania w wyrażeniu, czyli PHP chyba interpretuje to w ten sposób: 1) 'Testing ' . 1 => 'Testing 1' 2) 'Testing 1' + 2 => 2 3) 2 . '45' => '245' Czy może mi ktoś wytłumaczyć o co chodziło autorowi? (IMG:style_emoticons/default/smile.gif) Czy może po prostu aż tak się pomylił? Z góry dzięki. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 781 Pomógł: 256 Dołączył: 29.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
W tym przypadku do stringa czyli Testing dołączasz 1 ponieważ kropka powoduję łączenie i wychodzi 'Testing 1' potem do tego dodajesz 2 a ze do tekstu nie można dodać to wychodzi 2 i do dwójki dołączasz string 45 to wychodzi 245 tutaj to samo 'Testing ' . 1 => 'Testing 1' Do Testing za pomocą kropki łączysz 1 i wychodzi Testing 1 tutaj 'Testing 1' + 2 => 2 wychodzi 2 ponieważ 'Testing 1' to nie liczba i dla tego 2 tutaj 2 . '45' => '245' wychodzi 245 ponieważ do 2 łączysz string '45' Ten post edytował kefirek 13.02.2012, 13:52:48 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 587 Pomógł: 131 Dołączył: 8.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
The concatenation operator has a higher precenedce than the addition operator. Therefore, PHP will interpret this expression as if it were written ('Testing' . 1) + (2 . '45'). I tutaj mam wątpliwości, bo wg manuala obydwa te operatory mają taki sam priorytet i decyduje kolejność When operators have equal precedence, their associativity decides whether they are evaluated starting from the right, or starting from the left ... Kiedy operatory mają równe pierwszeństwo o ich zespoleniu decyduje czy są ewaluowane od prawej czy od lewej .. I wedle tabelki: Zespolenie | Operatory lewa | + - . Ten post edytował rocktech.pl 13.02.2012, 14:01:57 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 292 Pomógł: 89 Dołączył: 27.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
@kefirek Dzięki za odpowiedź. Dokładnie, właśnie taki jest mój tok rozumowania (IMG:style_emoticons/default/smile.gif) Nie rozumiem natomiast o co chodziło autorowi w wyjaśnieniu, bo jest całkiem inne, mimo że prowadzi do takiej samej odpowiedzi:
"The concatenation operator has a higher precenedce than the addition operator. Therefore, PHP will interpret this expression as if it were written ('Testing' . 1) + (2 . '45')." Chodzi mi o to, że wg niego to wygląda mniej więcej tak: 'Testing' . 1 => 'Testing 1' 2. '45' => '245' i dopiero teraz: 'Testing 1' + '245' => 245 Wydaje mi się, że autor się pomylił, ale po pierwsze jest to dla mnie dziwne, bo nie jest to literówka, tylko dość poważny błąd, który w innym przykładzie może być tragiczny w sktukach, a po drugie chce mieć wszystkie wątpliwości rozwiane na 100% (IMG:style_emoticons/default/smile.gif) Cytat When operators have equal precedence, their associativity decides whether they are evaluated starting from the right, or starting from the left ... Kiedy operatory mają równe pierwszeństwo o ich zespoleniu decyduje czy są ewaluowane od prawej czy od lewej .. No właśnie, czyli można przyjąć chyba, że jest to pomyłka (autora, nie mauala (IMG:style_emoticons/default/wink.gif) ). |
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat bo jest całkiem inne, mimo że prowadzi do takiej samej odpowiedzi No nie. Nie do takiej samej.wg, kodu autora wynik to liczba 245. wg. poprawnego interpretowania to tekst 245 (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 292 Pomógł: 89 Dołączył: 27.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
No nie. Nie do takiej samej. wg, kodu autora wynik to liczba 245. wg. poprawnego interpretowania to tekst 245 (IMG:style_emoticons/default/smile.gif) Hehe, no fakt (IMG:style_emoticons/default/smile.gif) Tego nie zauważyłem (IMG:style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 16:20 |