Rumah  >  Soal Jawab  >  teks badan

Pengendali logik dan keutamaan pengendali tugasan dalam PHP.

<p>Saya baru-baru ini menemuinya dalam petikan seperti ini:</p> <pre class="brush:php;toolbar:false;">$x = 2 && $y = 3; pra> <p>Coretan kod ini menghasilkan output 1:3. Dengan melihat jadual keutamaan operator, saya mendapati bahawa operator logik || dan && mempunyai keutamaan yang lebih tinggi daripada operator tugasan =. Oleh itu, ungkapan pertama harus dianggap sebagai $x = ($y || 2) = 3; . Kedua, pengendali tugasan mempunyai susunan yang betul, jadi jurubahasa harus cuba melakukan false = 3, yang jelas menyalahi undang-undang. Jadi, pada pendapat saya, coretan kod yang disebutkan di atas sepatutnya gagal untuk disusun dan harus membuang ralat parse atau runtime. Tetapi sebaliknya, coretan ini menghasilkan 1:3. Ini bermakna apa yang dilakukan oleh jurubahasa ialah: </p> <blockquote> <p>a) $y=3</p> <p>b) 2 && <p>c) $x = (2 && $y)</p> </blockquote> <p>Mengapa melakukan ini dan bukannya berdasarkan keutamaan pengendali?</p>
P粉176980522P粉176980522462 hari yang lalu533

membalas semua(1)saya akan balas

  • P粉615829742

    P粉6158297422023-08-08 00:02:37

    Jadual keutamaan operator yang anda berikan menyatakan sebagai ulasan berasingan:

    Jadi, sebenarnya, tugasan dalam ungkapan akan dianggap sebagai subungkapan. Bagaimana dan bila ini dilakukan tidak dinyatakan dengan jelas dalam dokumentasi, yang hanya menyatakan bahawa ungkapan "serupa" akan berfungsi dengan cara ini.

    balas
    0
  • Batalbalas