你不一定会做的简单运算题-已废除

会做的错题
这个我会,可是我做错了。越是简单的事情越容易忽视,这就是习惯性错误。也就是这样引入了今天这个一道简单的运算题。
有这样经历的应该不止我一个,看到此题目进来的朋友你是否也曾有过在考试时做错,却在试后大叹,这个题这么简单,我怎么就做错了,实在不应该。我们常常总结为马虎,其实是一个习惯,可能是视觉习惯引起的类似错误,也可能是意识上的轻视引起的错误,总之这些情况下的错误我们是可以避免的,可是今天我们还是必须来回顾一道简单的运算题。
本文原创博客地址:http://www.cnblogs.com/unofficial官网地址:www.pushself.com)
错题起因
A:问你一个简单的问题?
B:我现在有些忙,你把问题发给我看看
A:这个题很简单,不许敲代码,请直接把答案写在脑海里。(接下来参与这个题无需使用身边的键盘,直接心算即可)
A:
$a = 5;
echo $a + ($a++) + (++$a);
B:这么简单一个题你都不会啊? 5+5+7=17,输出17!
A:你确定?
B:我确定!
A:你自己敲代码试一下。
于是乎B就在浏览器console下敲了这样一句代码:
var a = 5;
console.log(a + (a++) + (++a));
本文原创博客地址:http://www.cnblogs.com/unofficial官网地址:www.pushself.com)
你应该可以猜到运算结果是什么,B就截图给A了,过了一会儿A也截图给了B。这个时候B开始意思到了这其中肯定有文章,用PHP写了一遍代码,运算结果不一致,看了一下也没有发现其中有什么问题,尽可能学会自己解决问题,决定开始查阅一下PHP手册。
PHP中运算原来是这样的
来源于官方文档中的一个Example:
<?php
$a = 1;
echo $a + $a++; // may print either 2 or 3
?>
为什么注释是may print either 2 or 3?
因为是// mixing ++ and + produces undefined behavior
可是结果尝试还是等于3,我有些不明白2是怎么得到的,请知晓的小伙伴指教。PHP在运算上原来还有这样一个坑,我跳下去了,你就不要跳了,免得压伤了我。
按照PHP运算优先级先运算了$a++ = 1;此时$a的值经历了自加1后变为$a = 2;于是2+1=3。
我在坑中等你放下绳索
尝试了JS,C#结果都是2,能明白其中细节的小伙伴不妨与我探讨一下,还有其它的坑也不妨拿出来分享一下。
本文原创博客地址:http://www.cnblogs.com/unofficial官网地址:www.pushself.com)
posted @   unofficial  阅读(837)  评论(7编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示