请教个小问题 int i = 30;int j = 1;while(i > 0){ j *= i; i--;}此程序用来求30阶乘,为什么while循环里面不可以写成while(i-- > 0)呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 int i = 31; int j = 1; while(--i > 0) { j *= i; } while(i > 0) 意味着当i=0时,就不循环了。而while(i-- > 0)意味着,当i=1时可以执行循环,但到循环里时 i 就等于零了。 当你i遍历到1时,i-- > 0这个值为true,执行完i-- > 0这个比较后i=0,再执行j *= i,不等于0就出问题了呵呵 (i-->0)中i--表达式的值,做--之前的i值.当循环到i的值是1时,i--的值 是1,i的值是0.循环还要断续,结果把0乘到j里去了。--i不一样,--i表达的值是做--这后i的值 。 楼主可以写while(--i > 0)因为 i--是先赋值后运算而--i是先运算后赋值但是,无论是用楼主的方法,还是用while(--i > 0)都会造成数据溢出即便你把 j 定义成long型 myeclipse网页都打不开来。。 Java 出学者 因该怎样来学 apppet 问题求助 请问各位老大有没有方法能够找出多个实现同一个接口的类!急 jre可以内嵌吗? 定义最简单的GUI的问题,也可能是编译问题,初学者 高手请指点,读文件为什末老报异常,谢谢! 高手请赐招:数字签名与数字认证的区别,尤其是概念上的区别。谢谢! 这是什么错误,大家请进? 自己一个人无聊,周末过的没意思,散分 200 Swing界面 程序运行没任何结果啊! BufferedReader的read和DataInputStream的readUTF()在是否阻塞上的区别
int j = 1;
while(--i > 0)
{
j *= i;
}
当循环到i的值是1时,i--的值 是1,i的值是0.循环还要断续,结果把0乘到j里去了。--i不一样,--i表达的值是做--这后i的值 。
while(--i > 0)因为 i--是先赋值后运算
而--i是先运算后赋值但是,无论是用楼主的方法,还是用
while(--i > 0)
都会造成数据溢出
即便你把 j 定义成long型