A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© li3N 中级黑马   /  2015-11-11 20:54  /  1024 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

下面的程序执行后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语言里,这两者的作用一样。

10 个回复

正序浏览
当我捂住答案用C的方法思考的时候竟然发现我是完完全全错的,受教了!
回复 使用道具 举报
一直以为自己已经搞懂了这个问题,今天才知道其实还差点儿
回复 使用道具 举报
jlq 中级黑马 2015-11-12 23:43:01
8#
xueix学习一下
回复 使用道具 举报
零尘 初级黑马 2015-11-12 23:21:37
7#
你可以试试 ++count  .java在这里 处理机制确实和c不一样
回复 使用道具 举报
今天刚好学到...没看懂你这说的
回复 使用道具 举报
上课刚学到
回复 使用道具 举报
确实不一样 学习了
回复 使用道具 举报
好像是什么一次运算 二次运算问题   学习中
回复 使用道具 举报
刚发现这个问题,谢谢楼主
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马