for循环 int m=2;for(int i=0;i<100;i++){ m=m++; System.out.println(m);}为什么打印出来都是2? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 m++与++m的区别是: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);}结果又不同,大家可以试试 楼主...关于这个贴列..你可以参见我博客里面<关于JAVA基本数据类型运算> 里面的分析..我自认为写的很详细...其实关键是内存分析....呵呵 楼主你可以把m=m++;改成m++;或者m+=1;或者m=m+1;总之m++是先使用再加的,所以你给m永远赋值成原来的值了, 我觉得1楼的解释不妥.int m = 2;for(int i = 0;i<10;i++) { m++; System.out.println(m);}这个m没有赋给任何变量进行保存,可是却会增长!支持11楼观点, m没变过啊,每次都是先取m...所以就是m=m m++与++m的区别是: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++先使用m的原来值,然后才对m进行加1操作,即:m=2。++m是先对m原来的值进行加1,然后再进行操作。你的m=m++就是把m先前的值2,再次赋值给m,然后才进行加1操作,但其进行加1后的值没有赋给任何变量进行保存。当进行下一轮循环时,m的值还是为2,再进行m=m++的操作,m还是等于2,以此类推。所以得到的结果永远为2. 手头没有反编译器。很好奇这段程序被编译之后会被“优化”成什么样子。good luck 跑了一下,确实是0. 先赋值再++是没有问题的,但是个人对"但其进行加1后的值没有赋给任何变量进行保存"这句话觉得比较难理解。如果真是这样的话那是不是"m = m++;"就等同于"m = m;"?还有"m++;"又该怎么理解呢?是m++的时候操作的是m所引用的内存块的值吗? 在C中这块代码的执行结果是:最后m的值是102。对JVM没有深入的了解,期待高手解惑。 国内外数据同步 jsp注册页面验证问题 【急】菜鸟求助:Spring配置问题,为什么Tomcat没有解析applicationContext.xml,急救!!! jacob调VB的dll的问题 尚学堂高清晰Hibernate(王勇老师主讲不断更新中) jsp??? 关于泛型求组 急!添加和删除是在一个struts action中做的,如何让他们forward不同的jsp页呀???? 请解释一下这段代码并解决一下这个问题! 郁闷ing~~~~~~byte[1]为什么不能等于254 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没有深入的了解,期待高手解惑。