作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将问题缩小到此代码
$a = 3;
$a = 3 * $a++;
echo $a; //9
$a = 3;
$a = $a * $a++;
echo $a; //12
compiled vars: !0 = $a
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
2 0 E > ASSIGN !0, 3
3 1 POST_INC ~2 !0
2 MUL ~3 ~2, 3
3 ASSIGN !0, ~3
4 4 ECHO !0
5 5 > RETURN 1
compiled vars: !0 = $a
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
2 0 E > ASSIGN !0, 3
3 1 POST_INC ~2 !0
2 MUL ~3 !0, ~2
3 ASSIGN !0, ~3
4 4 ECHO !0
5 5 > RETURN 1
最佳答案
此处的关键参与者是operator precedence,因此,尽管是表达式中的最后一个元素,但仍将$a++
评估为首先(即$a
之前)。请注意,post
中的post increment
表示该表达式(变量)的 Action 后评估,而整个表达式(代码行)的而不是评估。
在您的第一种情况下,代码是这样的:
$result = 3 * $a++;
$a
的值为
3
,因为它先被读取然后递增。该表达式中不再使用
$a
,因此
$a
的新值并不重要,除非再次引用
$a
,否则它不会影响我们:
$a = 3
$result = 3 * $a++
= 3 * 3
// $a is 4 now
= 9
$result = $a * $a++;
$a
的引用。评估将采用这种方式:
$a = 3
$result = $a * $a++
= $a * 3 // value of `$a` is 4 after post-increment
// evaluation, and this affects us as we
// evaluate $a again
= 4 * 3
= 12
$result = $a++ * $a++;
$a
值:
$a = 3
$result = $a++ * $a++
// $a is 4 now
= 3 * $a++
= 3 * 4
// $a is 5 now
= 12
关于php - 后增量表演很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59880917/
我对如何从 dask 中获得最佳效果感到困惑。 问题 我有一个包含多个时间序列的数据帧(每个都有自己的 key ),我需要运行一个函数 my_fun在他们每个人上。用 Pandas 解决它的一种方法包
在我的 symfony 应用程序中,我使用选民来检查用户是否可以访问某些功能。 现在,我有一个导航栏,其中的菜单根据这些权限显示或隐藏。 这个导航栏单独渲染大约需要 2 秒。每个页面都添加了很多内容。
我正在尝试实现 2D 版本的行进立方体算法(行进方 block ?),我遇到的主要障碍之一是性能问题(使用 WebGL 和 Three.js)。我注意到质量(体素/方形大小)和性能之间存在巨大的权衡,
我目前正在接近 Elm,我需要创建一个包含一些可折叠数据的页面。 由于我目前正在使用 Bootstrap,因此 Accordion 组件似乎是最好的组件。 这是我的相关虚拟代码: view : Mod
我是一名优秀的程序员,十分优秀!