今天面试了道面试题
public static void main(String[] args) {
int n=1;
for(int i=1;i<=10000;i++){
n=n*i;
}
System.out.println(n);
}
答案始料未及,大家都解答下
public static void main(String[] args) {
int n=1;
for(int i=1;i<=10000;i++){
n=n*i;
}
System.out.println(n);
}
答案始料未及,大家都解答下
i=31:1409286144
i=32:738197504
i=33:-2147483648
i=34:-2147483648
i=35:0
i=36:0
i=37:0
原因:int存储是32位,按2进制存储数据.当数据为2的倍数时,最后一位为0,4的倍数最后两位为0,当2的32次方的倍数时,整个32位都存储的0,结果也展示为0.
只需32个2的因数相乘就可以让32位的int值变0,更何况10000!中至少含有5000个2的因数
不知道这道题对于J2EE开发者来说,能考出什么