php运算符优先级

php运算符优先级,php,math,Php,Math,我很难理解php如何计算标准数学函数。在一个具体的例子中,我有这样的计算: 225+154*256+138*256*256+81*256*256*256 没错,没有括号 当使用php执行时,会产生以下数字: 1368038113 现在,当我从逻辑上看这个,从左到右求和时,这个数字甚至不接近。使用一个便宜的简单计算器,它放弃了在256的最后两次乘法之前进行计算,因为这个数字太大了 怎么可能在6乘256的计算中得到这样一个相对较小的数字呢 如果能详细介绍一下php是如何得出这个答案的,那就太好了 p

我很难理解php如何计算标准数学函数。在一个具体的例子中,我有这样的计算:

225+154*256+138*256*256+81*256*256*256 没错,没有括号

当使用php执行时,会产生以下数字: 1368038113

现在,当我从逻辑上看这个,从左到右求和时,这个数字甚至不接近。使用一个便宜的简单计算器,它放弃了在256的最后两次乘法之前进行计算,因为这个数字太大了

怎么可能在6乘256的计算中得到这样一个相对较小的数字呢

如果能详细介绍一下php是如何得出这个答案的,那就太好了


p、 我通读了这一页:它仍然不能帮助我完成上述操作。

数学的基本运算顺序是:乘法/除法,然后是加法/减法

使用一个超级简单的计算器,它一次只做一个运算。因此,一个简单的计算器可能会将您的输入处理为以下凌乱的字符串:

225+154*256+138*256*256+81*256*256

=>

=>

=>

=>

编辑

为什么我认为你在做:

=>


PHP遵循数学规则:

方括号、顺序、除法、乘法、加法、减法

因此,在您的情况下,其评估如下:

225 + 154 * 256 + 138 * 256 * 256 + 81 * 256 * 256 * 256
225 + 39424 + 9043968 + 1358954496
1368038113
$res = 225 + (154 * 256) + (138 * 256 * 256) + (81 * 256 * 256 * 256)
$res = 225 + 39424       + 9043968           + 1358954496
$res = 1368038113

如果要按不同的顺序进行,请使用括号。

像往常一样,乘法优先于加法。我已经计算了这个等式,它是正确的,所以我不知道你有什么问题


这个数字甚至不接近结果是正确的。PHP将首先执行乘法,然后执行加法。看起来是这样的:

225 + 154 * 256 + 138 * 256 * 256 + 81 * 256 * 256 * 256
225 + 39424 + 9043968 + 1358954496
1368038113
$res = 225 + (154 * 256) + (138 * 256 * 256) + (81 * 256 * 256 * 256)
$res = 225 + 39424       + 9043968           + 1358954496
$res = 1368038113

运算符优先级与形式数学相同:乘法/除法优先于加法/减法如果要强制加法和减法先行,你可以用括号把它们括起来:5*2+3和5*2+3不一样。如果我在Mac OS X中使用便宜的计算器,我会得到同样的结果。http://www.wolframalpha.com/input/?i=225+%2B+154+*+256+%2B+138+*+256+*+256+*+256+%2B+81+*+256+*+256+*+256这里有一个专门介绍这一点的手册页:像这样拆分是有意义的。谢谢,我认为这个答案比公认的答案好,因为它比较短,而且能马上概括出错误。
1,368,038,113
225 + 154 * 256 + 138 * 256 * 256 + 81 * 256 * 256 * 256
225 + 154 = 379
* 
256 = 97,024
+ 
138 = 97,162
* 
256 = 24,873,472
* 
256 = 6,367,608,832
+ 
81 = 6,367,608,913
* 
256 = 1,630,107,881,728
* 
256 = 417,307,617,722,368
* 
256 = 106,830,750,136,926,208
225 + 154 * 256 + 138 * 256 * 256 + 81 * 256 * 256 * 256
225 + 39424 + 9043968 + 1358954496
1368038113
225 + 154 * 256 + 138 * 256 * 256 + 81 * 256 * 256 * 256
=225 + 39424 + 9 043 968 +1 358 954 496
=1 368 038 113
$res = 225 + (154 * 256) + (138 * 256 * 256) + (81 * 256 * 256 * 256)
$res = 225 + 39424       + 9043968           + 1358954496
$res = 1368038113