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。
与
相比,使用上述结构是否有任何(可衡量的,objective)优势
$my_var = mt_rand(2, 3) * 2;
(我特别想知道为什么作者选择在随机范围内包括3,如果结果必须是均匀的。)
while(($my_var = mt_rand(3, 6))%2 != 0);
This ensures that $my_var is assigned either the number 4 or the number 6.
正如@Oli 在评论中提到的,这非常复杂且难以阅读。
它也有缺点,你无法真正预测它会迭代多少次。
它可以(理论上)“掷骰子”并在前 10、100 或 1000 次迭代中得出 5……甚至永远不会结束。 (mt_rand
的实施可能足够好,不会发生这种情况,但仍然会发生。)
我最近在一个废弃的 PHP 代码项目中遇到了以下构造:
while(($my_var = mt_rand(3, 6))%2 != 0);
(注意循环体是空的)。这确保为 $my_var 分配数字 4 或数字 6。
与
相比,使用上述结构是否有任何(可衡量的,objective)优势$my_var = mt_rand(2, 3) * 2;
(我特别想知道为什么作者选择在随机范围内包括3,如果结果必须是均匀的。)
while(($my_var = mt_rand(3, 6))%2 != 0);
This ensures that $my_var is assigned either the number 4 or the number 6.
正如@Oli 在评论中提到的,这非常复杂且难以阅读。
它也有缺点,你无法真正预测它会迭代多少次。
它可以(理论上)“掷骰子”并在前 10、100 或 1000 次迭代中得出 5……甚至永远不会结束。 (mt_rand
的实施可能足够好,不会发生这种情况,但仍然会发生。)