一直搞不懂a++和++a的区别 怎么办?

php中文网
发布: 2016-06-06 20:17:47
原创
2411人浏览过

<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 的值

SEEK.ai
SEEK.ai

AI驱动的智能数据解决方案,询问您的任何数据并立即获得答案

SEEK.ai 128
查看详情 SEEK.ai
<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。

相关标签:
php
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号