Logische Operatoren und Vorrang von Zuweisungsoperatoren in PHP.
P粉176980522
P粉176980522 2023-08-07 11:55:52
0
1
529
<p>Ich habe es kürzlich in einer Passage wie dieser gefunden:</p> <pre class="brush:php;toolbar:false;">$x = 2 && $y = 3; echo (int)$x.':'.(int)$y;</ vor> <p>Dieses Code-Snippet erzeugt eine Ausgabe 1:3. Beim Blick auf die Operator-Prioritätstabelle habe ich festgestellt, dass die logischen Operatoren || und && eine höhere Priorität haben als der Zuweisungsoperator =. Daher sollte der erste Ausdruck als $x = ($y || 2) = 3; behandelt werden, was $x = (2 && $y) = 3 ergibt und schließlich zu $x = false = 3; . Zweitens verfügt der Zuweisungsoperator über eine Rechtsreihenfolge, sodass der Interpreter versuchen sollte, false = 3 auszuführen, was offensichtlich illegal ist. Meiner Meinung nach sollte das oben genannte Code-Snippet also nicht kompiliert werden können und einen Analyse- oder Laufzeitfehler auslösen. Aber stattdessen ist dieser Ausschnitt 1:3 entstanden. Das bedeutet, dass der Interpreter Folgendes tut: </p> <blockquote> <p>a) $y=3</p> <p>b) 2 && $y</p> <p>c) $x = (2 && $y)</p> </blockquote> <p>Warum sollte dies getan werden, anstatt auf der Operatorpriorität zu basieren?</p>
P粉176980522
P粉176980522

Antworte allen(1)
P粉615829742

您提供的运算符优先级表格中作为一个单独的注释指出:

因此,实际上,在表达式中的赋值将被视为一个子表达式。具体的处理方式和时间并没有在文档中明确说明,文档只是指出“类似”的表达式会以这种方式工作。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!