![]() |
![]() |
![]()
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: 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) ). |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 08:42 |