![]() |
![]() ![]() |
![]() |
![]()
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? ![]() Z góry dzięki. -------------------- Zend Certified Engineer | Microsoft Certified Professional: Programming in HTML5 with JavaScript & CSS3 | Blog
|
|
|
![]()
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 -------------------- Despite the tons of examples and docs, mod_rewrite is voodoo. Damned cool voodoo, but still voodoo. --Brian Moore
I never go looking for a sucker. I look for a Champion and make a sucker of of him. --Amarillo Slim Home-made : js-gui-classes | Accordion | Tabs | Carousel / php-sms-classes | Obsługa bramki SMS MultiInfo | Obsługa bramki SMS Mobiltek |
|
|
![]()
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
![]() "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% ![]() 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 ![]() -------------------- Zend Certified Engineer | Microsoft Certified Professional: Programming in HTML5 with JavaScript & CSS3 | Blog
|
|
|
![]()
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 ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
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 ![]() Hehe, no fakt ![]() ![]() -------------------- Zend Certified Engineer | Microsoft Certified Professional: Programming in HTML5 with JavaScript & CSS3 | Blog
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 04:36 |