zoukankan      html  css  js  c++  java
  • PHP运算符优先级

    问题:
    1、常见的右结合运算符有哪些?
    **、++、--、!、各种赋值符号,其他的基本都是左结合。
    2、运算流程是什么样的?
    • 编译器先按照运算符优先级寻找运算符,再按照结合方向寻找相关的操作数,完成运算。再按照优先级继续寻找下一个运算符。
    • 如果运算符优先级相同,就从运算符的结合方向开始寻找运算符。
    3、举例
    三目运算符自身嵌套:
    $a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2
    二目运算符自身嵌套:
    "-"是左联的,那么 1 - 2 - 3 就等同于 (1 - 2) - 3 并且结果是 -4.
    "="是右联的,所以 $a = $b = $c 等同于 $a = ($b = $c)。
    这里照应了上面提到的运算流程第2点。
    同理,同级二目运算符嵌套:
    $a = 1;
    $b = 2;
    $a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5
    单目运算符嵌套(注意):
    $a = 1;
    echo $a + $a++; // may print either 2 or 3
    $i = 1;
    $array[$i] = $i++;
    echo $i;// may set either index 1 or 2
    dump($array);
    //我的PHP版本环境下打印结果是3 2 [2=>1]
    官方提示(!):
    运算符优先级和结合性只决定表达式是如何分组的,它们没有指定计算顺序。PHP并没有(在一般情况下)指定表达式的计算顺序,应该避免使用特定计算顺序的代码,因为PHP的不同版本之间或周围的代码可能会改变行为。
     
     
     
    参考:
  • 相关阅读:
    双六游戏 扩展欧几里得
    线段上的格点 辗转相除法(GCD)
    POJ 2395 Out of Hay
    POJ 2377 Bad Cowtractors
    POJ 1258 Agri-Net
    POJ 3169 Layout
    POJ 3723 Conscription
    次最短路径 POJ 3255 Roadblocks
    最小生成树求法 Prim + Kruskal
    如何将页脚固定在页面底部,4中方法 转载自:W3CPLUS
  • 原文地址:https://www.cnblogs.com/cquptzzq/p/8493733.html
Copyright © 2011-2022 走看看