我知道后自增,是先算表达式的值,然后就算a++,但是有些疑问,计算表达式的值的时候是a=1,接着还要计算a++,a就变为2了,可是为什么还是输出1了,难道是先执行输出语句的原因吗?谢谢了 作者: 种生祥 时间: 2012-11-11 01:37
int a = 1;
a = a++;//a++的值是1,再赋值给a,得到的a仍是1这里是把a++赋给a,不是把a赋给a
int a = 1;
a++;//这样你会得到2作者: 李长波 时间: 2012-11-11 01:58 本帖最后由 李长波 于 2012-11-11 02:00 编辑
a = a++;
先计算右边的!右边的值是不变的!还是1,先进行赋值运算!所以右边的值是1 在把1赋给a,所以a=1作者: 罗宝 时间: 2012-11-11 08:27
public class Test01 {
public static void main(String[] args){
int a = 1;
//此时首先计算右边的表达式a++的值,然后将得到的值赋值给右边的变量a,
//应为a++是后自加,所以此时a++的值仍然是1,将1赋值给a,所得到的结果
//自然就是1
a = a++;
(1) int a = 0 ; | (2) int c = 0;
int b = ++a + ++a ; | int d = c++ + ++c ;
int b = (0+1) + (1+1) ; | int d = (0) + (1+1);
int b = 3 ; | int d = 2;
第一个a++ 先自加 值为:1 第二个 a自加之前值已经为1 , 再自加为2 | 第一个c++是先运算再自加,值为0. 第二个++c
| 因为之前的c++,所以运算后赋值自身,所以++c值为2;
上面是变量名重复出现的问题解析
如果 int a = 0 ;
a = a ++;
这个表达式的意思是 右边a 先赋值给左边的a ,所以直接输出a的值还是 0
如果 int a = 0;
int b = a ++ ; 执行输出则a的值是1,b的值为0..