/**
* [奇葩代码] - 自增和赋值的顺序问题</br>
* https://gitee.com/oschina/bullshit-codes/blob/master/java/BadCode.java
* @author jspp@qq.com
*/
public class B004_AutoIncrease {
/**
* 计算总数
*/
public void countDemo(){
int num = 0;
for (int i=0;i<100;i++){
num = num ++;
/**
* do something
*/
}
System.out.println(num);
}
/**
* 输出结果:num=0
*/
}
/*
----- 分析:
@whater
i++ :
temp = i ;
i = i + 1;
i = temp;
so in "n = n ++;", n always equals temp , always equals 0;
@风青山
突然觉得这个例子很不错,至少说明了“先赋值后自增”有问题,或许是理解问题或许是表述问题,也可能是实现问题。
赋值给自身,导致无法自增。
另外,反汇编发现自增操作好像发生在赋值操作之前。
----- 解决
想要num自增,其实只要去掉赋值就行了,即“num++”,不需要 “num = num++”
*/