黑马程序员技术交流社区

标题: java的编译器对于i = i++做了些什么? [打印本页]

作者: li3N    时间: 2015-11-11 20:54
标题: java的编译器对于i = i++做了些什么?
下面的程序执行后count的结果是()
  1. public class Exec39 {
  2.         public static void main(String[] args) {
  3.                 int count = 0;
  4.                 for(int i = 0; i < 10; i++) {
  5.                         count = count++;
  6.                 }
  7.                 System.out.println(count);
  8.         }
  9. }
复制代码

A、0  B、10  C、9  D、11
答案是A,自己第一次将这个代码跑一遍以后也没看懂,后来去网上找了些解释:
java的编译器对于i = i++,相当于temp = i ; i = i+1 ; i = temp,换句话说相当于什么事都没做。
而C语言的编译器对于i= i++的处理方式则不同,如果上述代码改成用C语言写,那么结果是10。
也就是说,在java里i++和i = i++不是一个概念,但在C语言里,这两者的作用一样。
作者: 隔壁马良    时间: 2015-11-11 22:35
刚发现这个问题,谢谢楼主
作者: 小笨笨天    时间: 2015-11-12 00:48
好像是什么一次运算 二次运算问题   学习中
作者: z_one    时间: 2015-11-12 21:26
确实不一样 学习了
作者: 825952009    时间: 2015-11-12 22:46
上课刚学到
作者: xiaoxiao147    时间: 2015-11-12 23:00
今天刚好学到...没看懂你这说的
作者: 零尘    时间: 2015-11-12 23:21
你可以试试 ++count  .java在这里 处理机制确实和c不一样
作者: jlq    时间: 2015-11-12 23:43
xueix学习一下
作者: hbcoding    时间: 2015-11-13 09:56
一直以为自己已经搞懂了这个问题,今天才知道其实还差点儿
作者: Phy_zhang    时间: 2015-11-13 17:39
当我捂住答案用C的方法思考的时候竟然发现我是完完全全错的,受教了!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2