以下代码块将输出设为0.
public class HelloWorld{
public static void main(String []args){
int product = 1;
for (int i = 10; i <= 99; i++) {
product *= i;
}
System.out.println(product);
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么会这样吗?
这样做时:
int x = 100;
int result = 1;
for (int i = 1; i < (x + 1); i++) {
result = (result * i);
}
System.out.println(result);
Run Code Online (Sandbox Code Playgroud)
这显然是因为结果对于整数来说太大了,但我习惯于为溢出得到大的负数,而不是0.
提前致谢!
当我切换到这个:
int x = 100;
int result = 1;
for (int i = 1; i < (x + 1); i++) {
result = (result * i);
System.out.println(result);
}
Run Code Online (Sandbox Code Playgroud)
我得到这个.
这是我的代码:
int foo() {
int a = 1;
while(1) {
a *= 2;
printf("a = %d\n", a);
}
return a;
}
int main(void) {
foo();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它只是打印出"a = 0".我糊涂了!我错过了一些非常简单的事吗?