int m=2;
for(int i=0;i<100;i++){
m=m++;
System.out.println(m);
}
为什么打印出来都是2?
for(int i=0;i<100;i++){
m=m++;
System.out.println(m);
}
为什么打印出来都是2?
解决方案 »
- SSH集成问题 2011-9-9 22:17:11 org.apache.catalina.core.StandardContext filterStart
- 新手JAVA链接SQL server 2000的问题 麻烦看下 谢谢了
- javaee 程序员对javascript的要求高吗,这个需要学的很深入吗
- 做一个有协议的邮件系统 求思路
- struts action问题
- 高人 请指教
- Welcome2hibernate的程序运行出错!!!!
- 零薪兼职,有意请进
- Struts问题,请问怎么利用<logic:iterate>标签,和<html:text>标签,提交所有的一览数据。
- 如何测试自己写的数据库连接池的效率问题?
- NoSuchMethodException
- 怎样手写ajax调用服务端的方法,就像 dwr一样
m++先使用m的原来值,然后才对m进行加1操作,即:m=2。
++m是先对m原来的值进行加1,然后再进行操作。
你的m=m++就是把m先前的值2,再次赋值给m,然后才进行加1操作,但其进行加1后的值没有赋给任何变量进行保存。当进行下一轮循环时,m的值还是为2,再进行m=m++的操作,m还是等于2,以此类推。
所以得到的结果永远为2.
int m=2;
for(int i=0;i<100;i++){
m++;
System.out.println(m);
}
结果又不同,大家可以试试
int m = 2;
for(int i = 0;i<10;i++) {
m++;
System.out.println(m);
}
这个m没有赋给任何变量进行保存,
可是却会增长!
支持11楼观点,
m++先使用m的原来值,然后才对m进行加1操作,即:m=2。
++m是先对m原来的值进行加1,然后再进行操作。
你的m=m++就是把m先前的值2,再次赋值给m,然后才进行加1操作,但其进行加1后的值没有赋给任何变量进行保存。当进行下一轮循环时,m的值还是为2,再进行m=m++的操作,m还是等于2,以此类推。
所以得到的结果永远为2.
这样 m 从f循环里出去还是 2
是不会变得啊
呵呵
m++先使用m的原来值,然后才对m进行加1操作,即:m=2。
++m是先对m原来的值进行加1,然后再进行操作。
你的m=m++就是把m先前的值2,再次赋值给m,然后才进行加1操作,但其进行加1后的值没有赋给任何变量进行保存。当进行下一轮循环时,m的值还是为2,再进行m=m++的操作,m还是等于2,以此类推。
所以得到的结果永远为2.
很好奇这段程序被编译之后会被“优化”成什么样子。good luck
在C中这块代码的执行结果是:最后m的值是102。对JVM没有深入的了解,期待高手解惑。