【问题标题】:Precedence operator between * and / in PHPPHP中*和/之间的优先运算符
【发布时间】:2017-12-24 06:26:40
【问题描述】:
$c = 8 / (12 - 8) * 4;

echo $c; //output 8

我读过http://php.net/manual/en/language.operators.precedence.php。我认为应该是 8/16 而不是 8。有没有人帮我解释一下,谢谢。

【问题讨论】:

  • 1. 12 - 8 = 4 | 2. 8 / 4 = 2 | 3. 2 * 4 = 8 |我会说 8 是正确的
  • 你是怎么到 8 月 12 日的?
  • 为什么你认为应该是8/12
  • 我认为你应该重新参加数学课
  • 是的,我的意思是现在是 8 月 16 日。

标签: operator-keyword operator-precedence


【解决方案1】:

$c = 8 / (12 - 8) * 4;

回声 $c; //输出8

因为 (12 - 8) 等于 4 它将首先执行。在这个执行之后,我们将得到 ​​p>

$c = 8 / 4 * 4;

之后结果为 2 * 4 php 将执行 8 / 4 并给出结果 2。 最终结果将是 8。

在此代码中,括号将获得第一优先权,然后是除法,最后是乘法。

【讨论】:

  • 为什么先除法后乘法?听起来除法的优先级高于乘法,但事实并非如此。
  • @axiac 如果它们具有相同的优先级,则它们的关联性决定了它们的分组方式。除法是左关联的,因此它们分组(8/4)*4
  • @jgmh 当然正如你所解释的那样。我的问题是向 Alok Paul 提出的,因为从他们的解释中可以理解,在计算完括号中的子表达式之后,下一个操作始终是除法,然后才是乘法。
【解决方案2】:

算子优先级从高到低:/ == * > -

() 将强制执行最高优先级。

优先级相同的操作符,操作顺序从左到右。

所以,操作过程是: <?php $c = 8 / (12 - 8) * 4; // Give priority to parentheses inside $c = 8 / 4 * 4; // 12 - 8 ==> 4 // operators with precedence, from left to right $c = 2 * 4; // 8 / 4 ==> 2 $c = 8; // 2 * 4 ==> 8

这里只涉及基本的数学运算

【讨论】:

    猜你喜欢
    • 2014-03-03
    • 2012-08-10
    • 2018-04-02
    • 2020-11-14
    • 2019-06-10
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 2011-06-21
    相关资源
    最近更新 更多