问答详情
源自:6-10 PHP中循环结构之do…while语句的运用优势举例

while情况下 运行结果不可能出现6,请反驳我这个论断

<?php

    //while例子

$sum  = 0; 

$num = rand(1,6); //获取1至6的随机数,模拟掷骰子

$sum = $sum  + $num;//前进步长

while($num==6);

$num = rand(1,6);//获取1至6的随机数,模拟掷骰子

$sum = $sum  + $num;//前进步长

};

echo "while例子执行完毕,前进:".$sum ."<br />";


多次点击时,结果会出现“while例子执行完毕,前进:6”。

想不明白, 这段代码怎么可能会出现前进6呢?

1、第一步:当$num 随机出现6时,$sum的值为6+0=6,然后执行while 括弧代码。

2、第二步:执行括弧代码时,$num 可能随机出现1--6的任意数字,然后$sum=6+$num(随机出现的数字),最终$sum的结果肯定是 大于6的,即最小是$sum=6+1=7。 

提问者:黑羊sparrow 2017-12-31 00:38

个回答

  • 慕粉3348155
    2018-01-01 16:38:00
    已采纳

    代码问题,“while($num==6);”注意这句末尾的“;”。这说明了这是一句执行,和下面{...}里的不是一个部分。按你上面这样写,至少rand了两次,也就解释了6的出现,6是两次rand相加的结果。正确的“while(条件){...};”是这样,这样是和你说的一样,不会出现6,你可以再仔细看看原文。

  • qq_若安_2
    2018-01-04 10:08:57

    分析的透彻,清楚。非常感谢!