簡體   English   中英

具有空主體和條件中的賦值的 while 循環

[英]while-loop with an empty body and an assignment in the condition

我最近在一個廢棄的 PHP 代碼項目上遇到了以下構造:


while(($my_var = mt_rand(3, 6))%2 != 0);

(注意循環的空主體)。 這確保 $my_var 被分配了數字 4 或數字 6。

使用上述結構是否有任何(可衡量的,客觀的)優勢,例如

$my_var = mt_rand(2, 3) * 2;

(我特別想知道如果結果必須是偶數,為什么作者選擇將 3 包含在隨機化范圍內。)

while(($my_var = mt_rand(3, 6))%2;= 0);

這確保 $my_var 被分配了數字 4 或數字 6。

正如@Oli 在評論中提到的那樣,這非常令人費解且難以閱讀。

它也有一個缺點,就是你無法真正預測它會迭代多少次。

它可以(理論上)“擲骰子”並在前十、十或千次迭代中得出 5 個……甚至永遠不會結束。 mt_rand的實現可能已經足夠好,不會發生這種情況,但仍然如此。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM