Pengendali logik dan keutamaan pengendali tugasan dalam PHP.
P粉176980522
P粉176980522 2023-08-07 11:55:52
0
1
554
<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粉176980522
P粉176980522

membalas semua(1)
P粉615829742

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan