黑马程序员技术交流社区

标题: 求大神指导啊 [打印本页]

作者: li617111077    时间: 2013-12-27 16:48
标题: 求大神指导啊
int a = 30;
a = 10+a++;
int b = 10+ a++;
System.out.println("b="+b);
输出结果为什么是40呢
作者: 75100313    时间: 2013-12-27 17:04
楼主你好 我测试了一下你的程序 运行的结果 是50  代码已给出

  1. package com.mth.test;

  2. public class Test {

  3.         public static void main(String[] args) {
  4.                 int a = 30; // a的值是30
  5.                 a = 10 + a++;// a的值是40 先使用a的值 但是结果赋值给a 所以a还是40不是41
  6.                 int b = 10 + a++;// b的值是 50 此时a的值是41
  7.                 System.out.println("b=" + b); // 结果是50
  8.         }
  9. }
复制代码

作者: 伍艳雄    时间: 2013-12-27 17:09
int a = 30;
a = 10+a++;
int b = 10+ a++;
System.out.println("b="+b);
        //后++,变量本身先+1,表达式的值为加1前计算的值
记住结论就可以了....
反正我是这样理解的.10+a的值先赋给了b..然后a再自增....
实在不明白就多看两遍毕老师的视频吧..
作者: 青菜白汤    时间: 2013-12-27 17:15
首先呢你定义了int a=30,然后a = 10+a++;(开始a的值是30,a=10+a(a=30)++=40运算后会被重新赋值a=40,而a++是先运算在自增)
            int b = 10+ a++;(这里呢,b的值是50,因为a在上面已经重新被赋予值为40,所以b = 10+ a(a=40)++=50,同样的a++这里也是先运算在自增)
System.out.println("b="+b);的结果是50,而不是40.
作者: li617111077    时间: 2013-12-27 17:19
青菜白汤 发表于 2013-12-27 17:15
首先呢你定义了int a=30,然后a = 10+a++;(开始a的值是30,a=10+a(a=30)++=40运算后会被重新赋值a=40,而a ...

谢谢了,已经弄明白了
作者: li617111077    时间: 2013-12-27 17:23
伍艳雄 发表于 2013-12-27 17:09
int a = 30;
a = 10+a++;
int b = 10+ a++;

谢谢了,已经弄明白了
作者: li617111077    时间: 2013-12-27 17:25
75100313 发表于 2013-12-27 17:04
楼主你好 我测试了一下你的程序 运行的结果 是50  代码已给出

谢谢啊,我明白了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2