一篇看懂++i i++
/** * @Title:Test03 * @Description: * @author Crazy-ZJ * @data 2017年9月28日上午9:38:00 * @book 疯狂java讲义(第三版): */ public class Test03 { public static void main(String[] args){ int i = 0; i = i++ + ++i;//先执行i++之后i的值为0,再执行++i,i的值为1,再补增i++ 所以结果应为 i = 0 + 2; int j = 0; j = ++j + j++ + j++ + j++;//先执行++j之后j的值为1,再执行j++之后j的值仍然为1,再执行j++的值后j的值还是1但要补增之前的j++, // 此时j的值变为2,再执行j++之后j的值为2,再补增j++此时j的值为3,最终结果为:j=1+1+2+3; int k = 0; k = k++ + k++ + k++ + ++k;//先执行k++之后k的值为0,再执行k++,此时要补增之前k++此时k的值为1再执行第三个k++此时补增之前的k++ // 此时k的值为2,再支持++k后k的值为3,之后再补增第三个k++此时k的值为4,所以最终结果是 k = 0+1+2+4 int h = 0; h = ++h + ++h; int p1=0,p2=0,q1=0,q2=0; p1=++q1; p2=q2++; System.out.println("i = "+i); System.out.println("j = "+j); System.out.println("k = "+k); System.out.println("h = "+h); System.out.println("p1 = "+p1); System.out.println("p2 = "+p2); System.out.println("q1 = "+q1); System.out.println("q2 = "+q2); } }
最终输出结果为:
i = 2 j = 7 k = 7 h = 3 p1 = 1 p2 = 0 q1 = 1 q2 = 1
总结:
之前在学习i++ 和++i的时候有一个误区---我当时知道i++是在表达式运算完以后自增,++i是在自增以后再参与运算。但是这样是错误的!看上面的例子就知道,
K=k++ + k++ + k++ + ++k;这种情况 在我以前看来结果是1,其实第一个k++参与运算的时候没有自增,但在第二个k++的时候k要补增第一个K++,第三个要补增第二个,第四个要补增第三个。并不是这个表达式运算完成以后K++自增,而是在下一个K++的时候自增!!!
拼了命、尽了兴