zoukankan      html  css  js  c++  java
  • php逻辑操作符中&和&&的异同

    php有5种算术操作符(+ - * / %),6种赋值操作符(+= -= *= /= %= .=),8种比较操作符(=== < > <= >= != <> !==),6种的逻辑操作符(如&&、 ||、 &、 |、 ! 。其中逻辑与&可写成and,逻辑或|写成or),以及一些其他操作符(错误控制操作符@、 执行操作符反引号"--不是单引号、字符串操作符.与.=、递增/递减操作符++/--、三元操作符?:)。

    关于操作符优先级,可以参考相关文档。

    php中&和&&的异同

    [php] view plain copy
     
    1. <?php  
    2. $a=10;  
    3. if($a>4 && (++$a>10))  
    4. {  
    5. }  
    6. //输出结果为11.  
    7. echo $a;  
    8. ?>  
    9.   
    10. <?php  
    11. $a=10;  
    12. if($a>4 and (++$a>10))  
    13. {  
    14. }  
    15. //输出结果为11.  
    16. echo $a;  
    17. ?>  
    18.   
    19. **************************************************************  
    20.   
    21. <?php  
    22. $a=10;  
    23. if($a>4 && (++$a<10))  
    24. {  
    25. }  
    26. //输出结果为11.  
    27. echo $a;  
    28. ?>  
    29.   
    30. <?php  
    31. $a=10;  
    32. if($a>4 & (++$a<10))  
    33. {  
    34. }  
    35. //输出结果为11.  
    36. echo $a;  
    37. ?>  
    38.   
    39. *********************************************************  
    40.   
    41. <?php  
    42. $a=10;  
    43. if($a<4 && (++$a>10))  
    44. {  
    45. }  
    46. //输出结果为10.  
    47. echo $a;  
    48. ?>  
    49.   
    50. <?php  
    51. $a=10;  
    52. if($a<4 & (++$a>10))  
    53. {  
    54. }  
    55. //输出结果为11.  
    56. echo $a;  
    57. ?>  
    58.   
    59. *******************************************************************  
    60.   
    61. <?php  
    62. $a=10;  
    63. if($a<4 && (++$a<10))  
    64. {  
    65. }  
    66. //输出结果为10.  
    67. echo $a;  
    68. ?>  
    69.   
    70. <?php  
    71. $a=10;  
    72. if($a<4 & (++$a<10))  
    73. {  
    74. }  
    75. //输出结果为11.  
    76. echo $a;  
    77. ?>  
    78.   
    79. *******************************************************************  
    80.   
    81. <?php  
    82. // 下面的 sktest() 不被调用,原因是它们被运算符“短路”。  
    83. $a = (false && sktest());  
    84. $b = (true  || sktest());  
    85. $c = (false and sktest());  
    86. $d = (true  or  sktest());  
    87.   
    88. // "||" 的优先级比 "or" 高  
    89. $e = false || true; // $e 被赋值为 (false || true),结果为 true  
    90. $f = false or true; // $f 被赋值为 false [Altair注:"=" 的优先级比 "or" 高]  
    91. var_dump($e, $f);  
    92.   
    93. // "&&" 的优先级比 "and" 高  
    94. $g = true && false; // $g 被赋值为 (true && false),结果为 false  
    95. $h = true and false; // $h 被赋值为 true [Altair注:"=" 的优先级比 "and" 高]  
    96. var_dump($g, $h);  
    97.   
    98. ?>  



    表达式一$a && $b ,表达式二$a & $b

    1、相同点:两个表达式都是当$a、$b都为true时,表达式为真。两种运算符对此表达式结果没有影响。

    2、不同点:表达式$a && $b中&&前面的$a为false时,已确定表达式为假,此时逻辑操作符&&后的$b不再进行计算,即所谓的被运算符“短路”了。而对于表达式$a & $b,不论&前的$a真假,表达式后的$b依然要进行计算。逻辑操作符后的$b是否被运行,可能影响到后面的数据和程序结果。

    对于逻辑操作符||和|,异同同上。 

  • 相关阅读:
    手写识别——KNN
    软件测试
    《代码整洁之道》阅读笔记(一)
    《人月神话》阅读笔记(三)
    《人月神话》阅读笔记(二)
    《人月神话》阅读笔记(一)
    大四寒假日期汇报2.20
    大四寒假日期汇报2.19
    大四寒假日期汇报2.18
    大四寒假日期汇报2.17
  • 原文地址:https://www.cnblogs.com/xiaoleiel/p/8324189.html
Copyright © 2011-2022 走看看