黑马程序员技术交流社区

标题: 关与java的自加的终极分析! [打印本页]

作者: heima0503    时间: 2015-5-23 21:47
标题: 关与java的自加的终极分析!
//注意!!  仅仅是 java语言的分析!! C语言不同!!!

public class 自加测试 {
        public static void main(String[] args) {
                int a = 1;
                int b;
                b=a++;
                /**
                 * 分析:
                 * 关于自加运算,内存中,要执行三部;
                 *
                 * 第一步,定义临时变量,接收a ----> temp = 1;
                 * 第二部,a 进行自加运算-------->   a  = 2;
                 * 第三部,判断++的位置,++在a的左边,就 b = a;
                 *                                       ++在a的右边,就 b = temp ;
                 * 因此   , 此时  b = 1
                 */
                //========================================
                a=1;
                a=a++;
                /**
                 *  第一步,定义临时变量,接收a ----> temp = 1;
                 *  第二部,a 进行自加运算-------->   a  = 2;
                 *  第三部,判断++的位置,++在a的右边,   a  = temp;
                 *  
                 *  因此, 此时,  a = 1
                 */
                /*----------------------------------
                 * 注意:  
                 *
                 *      严重声明!!!!!!
                 *  
                 *  在C语言中,由于编译器不同,结果不一样!!!
                 *
                 *  int a = 0;
                 *  a=a++;
                 *  那么!!!!  a 的 结果 为 1 !!         *  
                 */
                //========================================
                a=0;
                a=a++ + ++a;
                /**
                 * 分割  
                 * 左侧  a++                     右侧 ++a
                 *
                 * ******************************************
                 * 左侧的运算 a++
                 *
                 *  第一步,定义临时变量,接收a ----> temp = 0;
                 *  第二部,a 进行自加运算-------->   a  = 1;
                 *  第三部,判断++的位置,++ 在a的右边,  左侧  = temp;
                 *  因此, 此时,  左侧 = 0;
                 *  
                 **********************************************
                 * 右侧的运算++a  //注意,此时的a,由上面的运算得来,因此,a=1
                 *
                 *  第一步,定义临时变量,接收a ----> temp = 1;  
                 *  第二部,a 进行自加运算-------->   a  = 2;
                 *  第三部,判断++的位置,++ 在a的左边,  右侧  = a;
                 *  因此, 此时,  右侧 = 2;
                 *  
                 * **************************************************
                 *
                 *      所以!! 此时  ,  a =  左侧  + 右侧  = 0 + 2 =2
                 */
        }
}



作者: heima0503    时间: 2015-5-27 18:25
C语言中 , 很多地方 都与 java 不同
作者: 石头888    时间: 2015-5-27 18:27
学习学习!




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