[求助][已解决]php运算结合性问题

[求助][已解决]php运算结合性问题

代码如下:

     
$intX=2;
$intZ=3;
$intx=4;

ECHO '$intX=2<BR>';
ECHO '$intZ=3<BR>';
ECHO '$intx=4<BR><BR>';

ECHO '$intX+$intZ='.$intX + $intZ."<BR>"; 
//3
ECHO '$intX+$intx='.$intX+$intx."<BR>";  
// 4
ECHO '$intX+$intx='.($intX+$intx)."<BR>";  
//$intX+$intx=6
ECHO '$intX*$intx='.$intX*$intx."<BR>";  
//$intX*$intx=8

[ 本帖最后由 yefeng2651 于 2006-11-14 13:41 编辑 ]

请问有什么问题?
毕业了。。。

// 后面就是实际输出的结果,

      ECHO '$intX+$intZ='.$intX + $intZ."<BR>"; // 3
      ECHO '$intX+$intx='.$intX+$intx."<BR>";  //  4

这两个不知道为什么是这个结果。

        ECHO '$intX+$intx='.($intX+$intx)."<BR>";  // $intX+$intx=6
        ECHO '$intX*$intx='.$intX*$intx."<BR>";  // $intX*$intx=8

而这两个输出正常,这个是关于优先性与结合性的问题。实际应用中,还是加上括号安全些。。


但是不知道 前面两个是怎么计算的。请大家指点。。

感谢[email protected]
引用:
是运算符的优先级不同导致的,因为 . 和 + 的优先级等级是一样的,所以
'$intX+$intZ='.$intX + $intZ."<BR>" 等价于 (('$intX+$intZ='.$intX) + $intZ)."<BR>"
运算步骤:
1、'$intX+$intZ='.$intX 结果等于 '$intX+$intZ=2';
2、'$intX+$intZ=2' + $intZ 结果等于 3 ,为什么等于3楼上已经做了大致的说明,不过不是被忽略,而是被当作0,相当于 intval('$intX+$intZ=2'), 也就是说 'abc' + 2 = 2, 而 '4abc' + 2 = intval('4abc') + 2 = 6;
3、3."<BR>" 结果等于 "3<BR>"
所以最终结果就是"3<BR>"。

而 * 的运算等级比 . 高,所以
'$intX*$intx='.$intX*$intx."<BR>" 等价于 '$intX*$intx='.($intX*$intx)."<BR>"
结果如何就不用我说了
总结下:

这里面不仅有优先级的问题,还有转型的问题。

不过,实际中不能这样子做,出了问题除错都没有头绪。仅是用来学习而已。