码迷,mamicode.com
首页 > 其他好文 > 详细

i++

时间:2014-05-09 08:41:56      阅读:289      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   java   color   

i++和++i使用的不同点在于一个是程序完毕后自增,一个是程序开始前自增。不论是Java还是C++,对i++类的问题总是很多。这里要注意运算符的优先级问题。

 

例1:下列程序的输出结果是()。

bubuko.com,布布扣
 1 public class Test {
 2 
 3     public static void main(String[] args) {
 4         int j = 0;
 5         for (int i = 0; i < 100; i++) {
 6             j = j++;
 7         }
 8         System.out.println(j);
 9     }
10 
11 }
bubuko.com,布布扣

A.0  B.99  C.100  D.101

解析:因为Java用了中间缓存变量的机制,所以,“j = j++;”可换成如下写法:

bubuko.com,布布扣
1 temp = j;
2 j = j + 1;
3 j = temp;
bubuko.com,布布扣

所以结果为0。

答案:A

 

例2:以下代码的执行结果是多少?【金山公司2005年面试题】

bubuko.com,布布扣
 1 public class Test {
 2 
 3     public static void main(String[] args) {
 4         int i = 0;
 5         i = i++ + ++i;
 6         int j = 0;
 7         j = ++j + j++ + j++ + j++;
 8         int k = 0;
 9         k = k++ + k++ + k++ + ++k;
10         int h = 0;
11         h = ++h + ++h;
12         int p1 = 0, p2 = 0;
13         int q1 = 0, q2 = 0;
14         q1 = ++p1;
15         q2 = p2++;
16 
17         System.out.println("i " + i);
18         System.out.println("j " + j);
19         System.out.println("k " + k);
20         System.out.println("h " + h);
21         System.out.println("p1 " + p1);
22         System.out.println("p2 " + p2);
23         System.out.println("q1 " + q1);
24         System.out.println("q2 " + q2);
25     }
26 
27 }
bubuko.com,布布扣

解析:

“i = i++ + ++i;” 执行的过程是先执行 i++ ,但是 i 自增 1 操作是稍后才执行,所以此时的 i 值还是 0 。然后执行 ++i ,++i 后 i 的值是 1 ,执行完 ++i 后要补增 i++ ,所以此时 i 的值实际上是 20 + 2 = 2 ,然后赋值给 i ,最终 i 的值是 2 。

“j = ++j + j++ + j++ + j++;” 执行的过程是先 ++j ,所以 j 的值是 1 。然后执行 j++ , j++ 后 j 的值仍然是 1 。接着再执行 j++ ,执行后的结果仍然是 1 ,但要补增刚才的 j++ ,所以此时 j 的值实际上是 2 。执行最后一个 j++ ,执行后的结果仍然是 2 ,但要补增刚才的 j++ ,所以此时 j 的值实际上是 3 。综上所述, 1 + 1 + 2 + 3 = 7 ,然后赋值给 j ,最终 j 的值是 7 。

其它值的计算与上面思路类似,在此不再敖述。

答案:

i 2  j 7  k 7  h 3  p1 1  p2 1  q1 1  q2 0

 

建议不要在其它表达式的内部使用++,这样编写的代码很容易给人带来迷惑的感觉,并会产生烦人的bug。 

i++,布布扣,bubuko.com

i++

标签:style   blog   class   code   java   color   

原文地址:http://www.cnblogs.com/JackyHwang/p/3717690.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!