以下代码输出“3”。我期待“1”。
echo $resultado."\n"; // show 2
$valor = $resultado * ($resultado - 1 / 2);
echo $valor."\n"; // show 3, and should be 1
为什么会这样?
答案 0 :(得分:3)
因为除法1 / 2
优先于操作顺序。所以你真的有这个表达式:
$resultado * ($resaltudo - (1 / 2))
您应该添加括号:
$resultado * (($resaltudo - 1) / 2)
得到你想要的答案。
答案 1 :(得分:1)
不,你错了。 /具有优先权 - 因此您的行就像:
$valor = $resultado * ($resultado - (1 / 2));
那就是:
$valor = 2 * (2 - 0.5); // and so $valor = 3
答案 2 :(得分:1)
这是因为除法运算符(/
)的优先级高于减法运算符(-
)。
您的表达式按顺序变为:
1 / 2 = 0.5 // Executed first since it's the highest precedence operation inside ()
$resultado - 0.5 = 1.5 // Still in the ()
$resultado * 1.5 = 3 // Final result
要更正表达式,请在减法周围插入画板,如下所示:
$resultado * (($resultado - 1) / 2);
答案 3 :(得分:1)
/优先于+或 - 要获得1,您需要使用
$resultado * (($resultado - 1) / 2)
答案 4 :(得分:0)
在表达式中替换$resultado
,您得到:
$valor = 2 * (2 - 1 / 2);
2 - 1 / 2 = 1.5
2 * 1.5 = 3
我的建议是复习基本数学;)
答案 5 :(得分:0)
将其更改为:
echo $resultado."\n";
$valor = $resultado * (($resultado - 1) / 2);
echo $valor."\n";
您实际上正在2 * (2 - (1 / 2)
= 2 * 1.5
= 3
答案 6 :(得分:0)
2 *(2-1 / 2)
除法运算符的运算符优先级高于减号运算符,因此计算机将按如下方式计算: 2 *(2-(1/2))= 2 * 1.5 = 3
大量使用括号。