首页 > 试题广场 >

以下代码执行的结果显示是多少()?

[单选题]
以下代码执行的结果显示是多少()?

  • num * count = 505000
  • num * count = 0
  • 运行时错误
  • num * count = 5050

count = count++  原理是 temp = count count = count+1 count = temp   因此count始终是0 这仅限于java 与c是不一样的

发表于 2017-08-28 10:41:37 回复(40)
窝草!这题明显没有答案啊!打印语句的"num * count = "  这个串串打印哪去了!!!!!害得我直接来个运行时异常!因为没得选呀。。。
发表于 2017-08-19 20:00:53 回复(46)
count = count ++;这个先将count这个值0暂存起来,然后count自加1变成1,最后将暂存的值赋值给count,count最终的值为0
发表于 2017-08-18 16:40:42 回复(14)

这题目挺好的!考察count++与++count的区别!
  1. for循环外面count=0,循环里面的count=count++;(count的值都等于count值,而后面count自加不影响count结果,因此这个式子无意义);循环count都为0(因count++是先返回count的本身值再自加1的)!
  2. 若是改为count=++count;(先自加,再返回自加后的值),结果就是5050*101=510050了!
  3. 改为count++;结果就是5050*101=510050了!

发表于 2017-08-22 11:15:02 回复(19)
问题的关键就是count=count++;的结果是什么,可以看如下代码:
编译后的字节码如下:

count=count++就是先把局部变量表中count的值0放入操作数栈中,然后直接对局部变量表中的count加1,然后再把操作数栈中的0出栈赋值给局部变量表中的count,最终局部变量表中的count值仍为0
编辑于 2018-08-17 14:54:02 回复(7)
仔细想了下这个题目,虽然一开始就知道答案,但是发现以前的一个思路是错的,这里记录下。
int i=1;int j = 0;
j = i++;
System.out.println(j +" "+ i); //1 2
上面这个代码,大家应该都没什么疑问吧。
在深入了解这个题目之前,我理解的这背后的原理是这样的;
由于i++,是后加1,所以先执行的是j=i; 所以j=1;
然后自增1,所以i=2;
但是如果是这样count=0时执行count = count++; 应该count =1 才对。

其实问题的关键是java在执行自增的时候是先将i保存在一个临时变量中,然后再自增;
所以j = i++ 实际的执行顺序是:
先将i保存到临时变量中:temp = i;
然后自增 i = i+1;
然后j = temp给j赋值;
看明白了么,之前我的理解一直的j先赋值,然后i才加1的。
实际是i先加一,然后j才赋值,只是这个时候j赋值的是temp,而不是i;
所以count=0时count=count++;之后count=0;
编辑于 2021-07-14 19:06:45 回复(11)
count0=count1++的执行步骤:
tmp=count1;
count1++;
count0=tmp;
编辑于 2017-08-17 22:34:26 回复(5)
count一直是0count++先返回0再自增
编辑于 2017-08-18 17:11:11 回复(12)
count++是先执行的,此时count=1,但是返回的是加之前的变量0,结果为1的count又变成0了。
发表于 2017-08-17 19:28:17 回复(0)
Java中的count=count++与C++中的count=count++是不一样的
C++中的count=count++直接等效于count++;而在Java中是这样处理的:首先将count的值(不是引用)存储在一个临时变量区,然后对count进行加1的操作,最后返回临时变量区的值。

发表于 2018-06-01 21:40:59 回复(1)

发表于 2017-11-29 14:24:19 回复(0)
count++为0,jvm将其拷贝到临时变量区;count加1,此时值为1;返回临时变量区的值,给count,为0。 在这看到的http://blog.sina.cn/dpool/blog/s/blog_5d53923e0101bz8p.html
发表于 2017-10-08 17:48:38 回复(2)
count = count++;这句话在Java和C++里面,运行结果是不一样的。
Java中等价于:tmp = count;count++;count = tmp;
C++中等价于:tmp = count;count = tmp;count++;
发表于 2018-02-28 15:26:56 回复(5)
不要陷入思维定势,反过来理解,count=count++这个式子在下一次循环的时候所使用的count是上一次循环当中等号左边的count,当然作为第一次循环count是0大家可以理解吧。理解不了永远为0的同志肯定是把赋值之后count++作为下一次循环的count了,也就是1了。
发表于 2018-03-07 14:34:03 回复(1)
我觉得简单修改下更容易理解吧:执行顺序 a=count++,这时a=0,然后执行count=count+1,这时count=1;然后执行count=a;count又变为0

编辑于 2019-04-05 16:25:13 回复(0)
这篇博客关于i++和++i讲解的不错,可以看看
发表于 2017-12-18 12:18:59 回复(2)

编辑于 2019-09-02 14:44:24 回复(0)
count++只能用来运算,不能用来赋值
发表于 2017-09-13 15:48:22 回复(0)
猜测 count = count ++;运算过程:
(1)temp = count;
(2)count自增;(++ 优先级高于 =)
(3)count = temp;
发表于 2017-09-06 14:12:01 回复(0)
count=count++;//可以这样理解
第一步,用一个临时变量将=号右边的表达式保存起来,即temp=count++,而count++是先取值再++,所以此时temp=0;
第二步,执行count++表达式,即count=1;
第三步,将temp赋值给=号左边的变量count,即count=0;
由上面的过程,count在计算过程确实增加了自增了1,但是第三步又被temp覆盖为了0。
发表于 2022-02-22 09:55:11 回复(0)