问题描述
- 自增或自减变量加减运算结束后结果为什么还要再进行一次自增或自减?
-
<?php $a = 10; $b = ($a++) + (++$a); echo $b; ?> 结果是 22
为什么呀
解决方案
http://www.guokr.com/blog/471312/
这种问题可以不用再讨论了。
解决方案二:
第三行的($a++) 本身是10,但如果只是这样的话打印的结果也为10(先运算再自增的),首先假设C=B+(A++),B首先看到的是A本身,因为运算式还没结束,那么它还会向后面找,再次碰见的是++,如果我们只是打印A本身的值是不会变的,但如果要打印C的值,A要进行自增后才是整个运算式C的值。
其次++a,表示先自增再运算,首先看到的是让a自增一次再计算运算式的表达式,但如果++a,单单要打印a值的话是要+1才能得出结果的,这就是2者区别,所以这个表达式的结果为22是对的
解决方案三:
++运算符看成operator 函数我觉得好理解些
后置++返回值是原值但是本身做了+1操作
前置++返回值和本身都是原值+1
先执行a++ 这时返回值是a原值但是a本身做了+1操作也就会说+号左面的值是10但是由于后置++的存在a=11了当执行前置++时a+=1返回值是12
所以就是10+12
解决方案四:
php 与 c 或 c++ 对这个问题的处理完全不一样。
c 或 c++ 里这是一个未定义行为,程序是错误的。php 的不知道,去查 php 的文档吧。
解决方案五:
这个问题,真不想解释
时间: 2024-08-31 11:50:46