【问题标题】:Incrementing numbers doesn't give an error递增数字不会出错
【发布时间】:2015-10-06 02:16:30
【问题描述】:

为什么这段代码低于 echo 的 2 并且没有给出错误,它只是忽略 +1+2+3+4 吗?

我已搜索但找不到答案。

<?php
$i = 1;
$i+++1+2+3+4;
echo $i;

【问题讨论】:

    标签: php numbers increment


    【解决方案1】:

    那行:

    $i+++1+2+3+4;
    

    说:

    • 递增$i
    • $i 的值pre 添加到+1+2+3+4,但不要将结果存储在任何地方。

    因此$i == 2

    如果你不希望它被忽略,你应该存储结果:

    $i = $i+++1+2+3+4;
    

    【讨论】:

      【解决方案2】:

      一切都很好。你刚刚忘记了赋值,所以i 只受++ 运算符的影响:

      <?php
      $i = 1;
      $x = $i+++1+2+3+4;
      echo "{$i} vs "{$x}";
      

      会回来

      2 vs 11
      

      【讨论】:

        【解决方案3】:

        您永远不会在任何地方分配已完成的操作:

        这两个在功能上是等价的:

        $i++;
        $i = $i + 1;
        

        两者都会将 $i 加 1,并将增加的值保存在 $i

        使用$i+++1+2+3+4,您实际上是在执行

          ($i++) + 1 + 2 + 3 + 4
        

        这是

         $i = $i + 1;
         1 + 2 + 3 + 4; // useless, result not stored anywhere
        

        所以将$i 增加1,将其保存到$i,然后进行其他添加。但是由于那些没有被保存在任何地方,结果被丢弃了。

        如果你有

        php > $i = 1;
        php > $i = $i+++1+2+3+4;
              ^^^^^----add this
        php > echo $i;
        11
        

        那么它会按您的预期工作。

        【讨论】:

          【解决方案4】:

          $i++ 表示$i 加 1。
          和 python 一样,+1+2+3+4 意味着将 $i 预增量的值添加到 +1+2+3+4 但不要将其存储在任何地方。(所以没有内存地址或类似的东西......)。
          所以你得到的只是$i==2

          【讨论】:

            猜你喜欢
            • 2020-01-09
            • 1970-01-01
            • 2019-08-13
            • 2014-08-01
            • 1970-01-01
            • 2020-08-15
            • 2012-04-29
            • 1970-01-01
            • 2017-05-18
            相关资源
            最近更新 更多