一个关于PHP的问题?

  • 回答 (2)
  • 关注 (0)
  • 查看 (123)

代码如下:

<?php
$a = 7;
echo $a-- - - --$a;
echo $a;

运行结果是12和5

求解计算机是如何计算出12的结果呢?

当巨浪把当巨浪把提问于
当巨浪把it修改于

自问自答下把:我查到的资料如下:

$a-- 返回 $a,然后将 $a 的值减一。

$a-- 返回的是 $a 减一 之前的值。

原理依据: 运算符的优先级、递增/递减运算符

优先级规则如下:

递增运算符规则如下:

解释如下:

根据优先级规则,题中代码等价于

<?php
$a = 7;
echo ($a--) - (- (--$a));
echo $a;

其中,第一个 echo 中,根据 -- 运算符优先级

$a-- 先执行,但是其副作用在此 第一个括号之后生效,所以此时参与运算的是 7,但是 $a 的值已经变成了 6

--$a 在 $a-- 后执行,但是其副作用先生效,此时 $a 的值变成了 5,并参与后边运算

所以,第一个 echo 等价于:echo 7 - (-5),结果为 12;

第二个 echo 为 $a 经过两次递减之后的值:5

下边从 opcode 角度来看这段代码,如下图所示:

我们可以看到,POST_DEC 生成,PRE_DEC 后生成,然后是两个 SUB。

其中,需要特别理解的是,后置递减副作用的生效节点。

回答过的其他问题

如何寻找最适合自身的云应用模式?

公有云 公有云优势: 灵活性: 当问到选择公有云的原因时,很多公司选择了灵活性。公有云模式下,用户公司几乎可以立即就配置和部署新的计算资源,所以这些公司的产品和服务可以实现第一时间的上市或上线。而且,在之后的运行中,根据需求变化而进行的计算资源组合更改也会变得非常简单。 可扩展性...... 展开详请

为什么不同的人在购物网站上搜索同样的东西看到的结果不一样?

你说的这个毫无疑问的是通过推荐算法实现的。 算法工程师拿一年30w+的工资,自然要给企业创造利润啊。 比如他们中的一部分,会去做推荐算法。 推荐算法能做到的事情很多,比如增加用户粘性,增加转化率(简单说就是点击量到下单率),舆论导向(比如最近被曝的脸书操控美国大选)。 好了,现在...... 展开详请

在Xcode 10(ERROR)中找不到架构x86_64的符号

在React.podspec中你需要改变 ss.compiler_flags = folly_compiler_flags 至 ss.dependency "DoubleConversion" ss.dependency ...... 展开详请

如何使用Javascript将Excel日期序列号转换为日期?

已采纳
试试这个: function ExcelDateToJSDate(serial) { var utc_days = Math.floor(serial - 25569); var utc_value = utc_days * 86400; ...... 展开详请

Mono https webrequest因“身份验证或解密失败”而失败怎么解决?

在提出请求之前,只需添加以下行: ServicePointManager.ServerCertificateValidationCallback = MyRemoteCertificateValidationCallback; 而这种方法: public bool MyRem...... 展开详请

如何卸载“Microsoft.NET Core 1.0.0 RC2-VS 2015 Tooling Preview 1”?

已采纳
从Microsoft下载安装程序exe的副本: 预览1 预览2 预览2.0.1 预览2.0.2 预览2.0.3 询问后选择此文件后。然后,可以成功删除它。... 展开详请

关于作者

所属标签

扫码关注云+社区

领取腾讯云代金券