$a=10; $b=$a++; //b=10 a=11$c=$b++ + ++$b; //b=10+11 b=11+11
$d=$c--; //d=22 c=21; 
//$e=$d-- - --$d;
echo $d-- - --$d; //22 - 21运行后是2,我分析是1,求大侠分析。3QQ

解决方案 »

  1.   

    $a=10; $b=$a++; //b=10 a=11$c=$b++ + ++$b;  
    <=> 
    $tempB = $b++; $tempC = ++$b; $c=$tempB + $tempC; //tempB = 10; $tempC=12; $c=10+12 = 22
    $d=$c--; //d=22 c=21; 
    echo $d-- - --$d; 
    <=> $tempD = $d--; $tempE = --$d;  $result = $tempE-$tempD //$tempD=22; $tempE=20;
      

  2.   

    $a=10; $b=$a++; //b=10 a=11$c=$b++ + ++$b; //c=10+12
    //关键是要明白,在执行中间的“+”时,前面的“$b++”就执行了,就加了“1”了。
    $d=$c--; //d=22 c=21; 
    //$e=$d-- - --$d;
    echo $d-- - --$d; //22 - 20
    //$d-- 是22,这个你肯定能理解,当执行到“-”时,前面的$d--紧接着执行,而--$d是先减一,再执行运算,所以就有了 22-20 =2 这个结果了。
      

  3.   

    呵呵 这题目真有意思哈!
    前面的代码都不用看 光看最后一行就行了
    echo $d-- - --$d;
    设d=0
         0 - --(-1)
         0 - -2
    echo 2;
      

  4.   

    $a=10;  $b=$a++; //b=10 a=11$c=$b++ + ++$b; //c=10+12
    //表达式自左向右进行,$b++参与时值为10,过后$b的值已经变为11(先参与后自增),遇到++$b时$b立刻自增(在上次的基础上11+1=12)变为12,因为$c变为22。
    $d=$c--; //d=22 c=21;  
    //$e=$d-- - --$d;
    echo $d-- - --$d; //22 - 20
    //$d-- 参与时是22,参与过后$d的值已经变为21,遇到--$d立刻自减变为20(在原来的基础上21-1=20),因为结果为 22-20 =2 。希望能帮到你