<?php
$a = 1;
echo $a++ + $a + ++$a;
?> 
echo出来是6  求代码实现方式~~  搞晕了~~

解决方案 »

  1.   


    看对应的opcode比较实在,你要说按运算符优先顺序来,应该等于7
      

  2.   

    $a++   为什么没累加  $a=$a+0?
      

  3.   


    echo $a++; //应该是$a输出后在进行运算
    echo $a;//这才得到了累加后
      

  4.   

    建议还是要使用()来保证运算符的优先级echo ($a++) + $a + (++$a);相当于 1+2+3另外还要搞清楚前置++和后置++的用法参考资料:PHP 运算符
      

  5.   

    $a = 1;
    echo $a++ + $a + ++$a;
    $a++ 是用$a的value参加运算,然后自+1(注意不是执行完整个式子后+1,而是程序执行完$a++后就自+1,$a++本身就是个程式),此时$a = 2,而++$a是先执行自+1后,在执行运算,也就是楼上的“1+2+3”了
      

  6.   

    那楼上各位 如何解释
    $a + $a++ 输出结果为3的问题~~ 按大部分人的观点 应该是 1 + 1 =2 
    $a + $a++ 和 $a + $a + $a++ 输出结果一样 都是3!
      

  7.   

    同一类问题
    $a + $a++ 输出结果为 3
    但 $a + 0 + $a++ 输出结果却蛋疼的变成了2!!
      

  8.   

    个人认为 $a++  $a   ++$a 在计算的时候是有优先级的 而不是简单的从左往右计算  大家可以参考手册里的一段代码  但是如果有优先级  上面的问题就更不好解释了~~~
    手册代码如下Something to think about:$a=1; 
    $a  +=  $a++  +  ++$a; 
    echo $a;will give you 7.Why is this?1. ++$a is first incremented. Now $a is 2.
    $a += $a++  +  2
    $a is 22. $a++ is added to 2 then $a is incremented
    $a += 2 + 2
    $a is 33. now the value of 2 + 2 is added to $a ($a is 3)
    $a = $a + 2 + 2Answer: 3 + 2 + 2 = 7 
      

  9.   

    个人认为 是 $a+(++$a)+(++$a)
    = 1 + 2 + 3 = 6