a++与++a

a++与++a

int a = 0;

        for (int i = 0; i < 99; i++) {

            a = a ++;

        }

        System.out.println(a);

如上题a为啥是0而不是99呢?谢谢!


 int b = 0;

        for (int i = 0; i < 99; i++) {

            b = ++ b;

        }

        System.out.println(b);

如上此题为啥此时b的值为99了呢?谢谢!

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕雪 2020-09-05 20:00:38

1)由于++在前和在后差别很大。如果是a++则是指先使用a进行赋值再进行+1。而++a则是指先做+1再进行赋值。2)由于a=a++赋值时导致a的混乱,永远都是0,如果换成c=a++则a的值为99

http://img1.sycdn.imooc.com//climg/5f537d74099f1e0404940276.jpg

祝:学习愉快

  • 提问者 Ceoking #1
    “由于a=a++赋值时导致a的混乱,永远都是0”中的“赋值时导致a的混乱”怎么理解?
    2020-09-06 15:17:38
  • 好帮手慕雪 回复 提问者 Ceoking #2
    a=a++,先把a拿出来准备赋值给a,它等价于temp=a,a=a+1;a=temp。所以导致a一直为0。
    2020-09-07 09:54:07
  • 提问者 Ceoking 回复 好帮手慕雪 #3
    a=a++不是先把右边a赋值给左边a然后执行a=a+1然后在下个循环将上个循环的a=a+1的a赋给左边的a然后再执行a=a+1这样循环下去吗?那如果这样为啥会使得a始终为0呢?谢谢!
    2020-09-07 20:32:16
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师