请教个小问题 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型 java.nio包(新IO)用的多吗? 如何知道Map对象的大小 Class到底是干什么用的?我看书都看不懂。。 急!急!急!希望各位大虾能帮我解决下在MyEclipse中Java程序创建数据库的问题 关于泛型在static函数中 Java编程思想 (Thinking in java)第四版 请教 谁能帮我写个简单的程序 windows和linux相互之间传文件有哪几种方法啊? Class。forName工厂模式遇到的问题求解 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型