循环外定义count=0,循环执行count=count++后,输出count仍是0

mac2024-07-09  53

今天做了一些面试题,发现了自己致命的基础不牢的很多问题。例如下面这一个:

public class Demo{ public static void main(String[] args) { int count = 0; int num = 0; for (int i = 0; i <= 100; i++) { num = num+i; count = count++; //count++; } System.out.println(num);//5050 System.out.println(count);//0 System.out.println(num*count);//0 } }

原本以为输出结果是这样的:num=5050;count=101;num*count=510050;

实际结果如上所示。count=0;

查阅了资料,原来------

java中i++的执行原理,在java中执行i++或者++i都会赋值给临时变量的。这和C语言是不同。在C中是能得到想要的结果。但是在java中是不一样的。

例如:i=j++,可以分为两部执行,第一步:i=j,第二步:j+1,即先赋值再++, 所以count=count++后count始终是零,只不过是第二个count混淆视听了,我们完全可以把它当做另一个不相关的变量。

很明显,如果把代码改成

count++;

结果便是原先想要的的了。

最新回复(0)