<code> 一直不理解这个a++和++a的用法 都是迷迷糊糊的 首先问一下a++是不是就等于a+=1呢 如果不是的话为什么?为什么下面这个echo出来的$a的值就变了呢 $a的值一直不变才对啊 $a=5; $b=$a++; echo $b; echo $a; 还有一个 $a=5; $b=$a++ + ++$a; echo $b; echo $a; 这个为什么输出$b是11,$a是7呢? $a++ 是6吗?然后++$a是7吗 6+7不是13吗?为什么是11呢? </code>
<code> 一直不理解这个a++和++a的用法 都是迷迷糊糊的 首先问一下a++是不是就等于a+=1呢 如果不是的话为什么?为什么下面这个echo出来的$a的值就变了呢 $a的值一直不变才对啊 $a=5; $b=$a++; echo $b; echo $a; 还有一个 $a=5; $b=$a++ + ++$a; echo $b; echo $a; 这个为什么输出$b是11,$a是7呢? $a++ 是6吗?然后++$a是7吗 6+7不是13吗?为什么是11呢? </code>
遇到这样的 有秘诀的
++a 先赋值后运算 可以理解为先+1 后运算
a++ 先运算后赋值 可以理解为先运算 后+1
明白了吗?
如果是
<code>$b = $a++ + ++$a; /*分三部份理解 第一 ++$a 的优先级要高于 $a++ 所以++$a 要先+1 这时候$a=6 第二 前面的$a++ 根据上面的条件 a++ 先运算后加一 这时候$a已经等于6了 (步骤一) 所以$b = 6 + 6 = 12; 第三 $a的值 步骤一 $a = 6; 步骤二 a++后运算 $b的运算结束后 $a + 1,这时候就是$a的值了 $a = 7 */</code>
a++是先执行表达式后再自增,执行表达式时使用的是a的值。
++a是先自增再执行表达示,执行表达式时使用的是a自增后的值。
所以$b得值为5,$a的值为6.
第一个问题理解了,第二个也就顺理成章了。
亲测,第二个 $b
是 12
简单说,++
就只在执行这个表达式之前或之后添加一个 $a=$a+1
比如
<code>$b = ($a++)+10 //等价于 $b = $a + 10; $a = $a+1 $b = ++$a + 1 //等价于 $a= $a + 1; $b = $a+10;</code>
含有++
只有一个++ 的话还是可以用用的,多个的涉及优先级和编译器解析的问题,就不太建议用了。
a++ 是先在表达式中用了当前 a 的值,再给 a 自增
++a 是先给 a 自增了再用 a 的值
<code class="cpp">int a = 1; int b = a++; // b == 1 a = 1; int c = ++a; // c == 2</code>
如果你实在搞不懂,只需要把 a++
或者 ++a
作为单独的一句来使用就好,比如上面的翻译下
<code class="cpp">int a = 1; int b = a; a++; // 或 ++a; a = 1; ++a; // 或 a++; int c = a;</code>
至于一堆 + 号连在一起那种情况……你自己写程序的话,直接拆开写吧,仅在考试的时候会遇到。(如果不幸看到别人这样的程序,那就实验下结果就知道了)
a++ 是当前语句执行完后再给 a的值加一
++a 是先给a的值加一再执行语句
使用完a之后再把a加1
先把a加1之后再使用a
补充一个细节。自增不等于a+=1。除非代码被优化成a++或者++a。否则具体到底层的指令会不一样。一个是add a,1。一个是inc a。