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