int a = 5;
a = a--;
System.out.println(a);
为什么输出是5?a--为什么不执行了?
如果改成这样:
int a = 5;
int b = a--;
System.out.println(a);
输出就是4.就执行了a--。请问这是为什么呢?
a = a--;
System.out.println(a);
为什么输出是5?a--为什么不执行了?
如果改成这样:
int a = 5;
int b = a--;
System.out.println(a);
输出就是4.就执行了a--。请问这是为什么呢?
a = a--会先把进行运算 a = a 赋值、再进行运算--如果是a = ++a 则会先执行++ 在执行赋值
比如: int a = 0 ,b=0,c=1;然后 a = c++; b= ++c;输出结果 a = 1 , b=2、简说就是先执行离=进的东西
按照这样的话,不是应该先执行a = a,这时a是5。然后执行a--,a不就成4了?为什么输出会是5?
a--只是个表达式、a = a 是5 然后输出5 只有你做下一种调用或者方法的时候 才能感觉到--的存在
a--不是应该先操作,后--么?不是应该先把a赋值为5,在--为4的么?而且我用debug单步运行发现a的值始终都是5,没变化过难道a--就根本没有执行???
我试了,代码如下: int a = 5;
a = a--;
System.out.println(a);
int b = a+1; //我在这里调用了a,并让a+1赋值给b,然后输出b的结果是5,a并没用执行--啊
System.out.println(b);
相反的,--a 是 先进行 -- 操作运算 然后再进行 其他运算
看下2楼的过程,正解
我想问的是为什么int b = a--的时候a--就执行了,而a = a--的时候a--就不执行
a = a-- 赋值完之后 a--就失效了、、、--- int a = 5;
a = a--;
System.out.println(a--);
System.out.println(a--+a);
System.out.println(++a);
你运行下这段代码看看结果就能明白了
这行语句点醒了我
是不是说,a--+a中第一个a没有做--,保留了4的值,然后再“+”的时候先运行了a--,所以后面的a变成了3.那么a = a--就是后面的a先保留了5的值,然后再“=”的时候做了a--,a变为4,然后在执行把刚才那个5赋值给a?
a++对应于
{
int temp = a;
a++;
return temp;
}
++a对应于
{
a++;
return a;
}
int a = 5;a = a--;中a--的意义就是先确定返回值是a(5),然后计算--,a变为4,然后进行等号负值,a=5.我是这样理解的。
举例int a = 5;
System.out.println(a--+a);
System.out.println(++a);a--+a执行步骤是,先返回a--的值(5)同时--操作影响了a的值,a变成4,再计算+的时候是拿(a--)返回的值(5)与这时的a的值(4)进行加法运算,得到9
并不是上面说了a--时候没进行--操作