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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

下面的程序执行后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 个回复

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