zoukankan      html  css  js  c++  java
  • 你不一定会做的简单运算题-已废除

    会做的错题
    这个我会,可是我做错了。越是简单的事情越容易忽视,这就是习惯性错误。也就是这样引入了今天这个一道简单的运算题。
    有这样经历的应该不止我一个,看到此题目进来的朋友你是否也曾有过在考试时做错,却在试后大叹,这个题这么简单,我怎么就做错了,实在不应该。我们常常总结为马虎,其实是一个习惯,可能是视觉习惯引起的类似错误,也可能是意识上的轻视引起的错误,总之这些情况下的错误我们是可以避免的,可是今天我们还是必须来回顾一道简单的运算题。
    本文原创博客地址: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)
  • 相关阅读:
    android so壳入口浅析
    PySide图形界面开发(一)
    对一个伪装成微信的加固病毒的分析
    ZjDroid工具介绍及脱壳详细示例
    用pyinstaller把python代码打包成exe可执行文件
    Android下so注入汇总
    利用drozer进行Android渗透测试
    OWASP移动安全漏洞Top 10
    python with原理
    腾讯云
  • 原文地址:https://www.cnblogs.com/unofficial/p/3963380.html
Copyright © 2011-2022 走看看