0

我只是在尝试一个小程序,但我得到了意想不到的输出。

for($i=20;!$i<20;$i--)
echo '*';

预期的输出*仅在第一种情况下$i=20为假,因此!$i<20应该返回真,但循环执行的次数等于 的值$i

我尝试操纵值并得出结论,当我将值设置为$i负时,循环变得无限。

此外,我尝试了这个

echo 20<20;

输出没有像预期的那样

echo !20<20;

输出1符合预期

现在当它尝试时:

19<20

它返回 1 但是当我尝试时

!19<20

它正在返回1 为什么会发生这种情况?我在 WAMP 服务器和我的 PHP 版本上运行 PHP5.5.0

注意:我对 for 循环没有任何问题,我可以处理它,所以请不要回答纠正我的循环,而是我对它的工作感到困惑,!所以请回答它。

4

2 回答 2

1

您需要括号来“不”正确的部分:

for($i=20;!($i<20);$i--)
  echo '*';

这样做的例子!20<20

!20<20
!(true)<20  <- converts the type to bool so we can negate
false<20    <- negates the true to false
0<20        <- converts the false to an int to compare
true

这样做的例子!19<20

!19<20
!(true)<20  <- converts the type to bool so we can negate
false<20    <- negates the true to false
0<20        <- converts the false to an int to compare
true
于 2013-10-24T05:51:24.857 回答
0

尝试

for($i=20;!($i<20);$i--)
echo '*';

问题是 '!$i' 首先执行,然后是 '<' 操作员工作。

于 2013-10-24T05:56:58.770 回答