A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© heima0503 中级黑马   /  2015-5-23 21:47  /  289 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//注意!!  仅仅是 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
                 */
        }
}


2 个回复

倒序浏览
C语言中 , 很多地方 都与 java 不同
回复 使用道具 举报
学习学习!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马