这个运行结果为什么是0不是很明白

代码是这样的

img


求1!2!3!一直乘到88!,用java写不是这样嘛?用do while循环

img

  • Java中 Int型的最大值 为 2147483647, 上面 i < 10 时,a = 1073741824; i < 11时,a就已经溢出了,而且 这个溢出很多,可以看下面的截图

img

  • i < 11时, a的值 为 1073741824 * 3628800 = 3896394330931200 ,进制转换如下:

img

  • int 型数据所在的 32位二进制数据都是 0, 所以最终 a 输出0

该回答内容部分引用GPT,GPT_Pro更好的解决问题
上述代码的结果为0,是因为变量i初始值为11,在do-while循环中,i的值会被增加2,但是88大于i时,while条件不满足,循环终止,最后的结果就是i的值,也就是11+2+31=44,而44小于88,所以最后的结果是0。

具体代码如下:

int i = 11;
int sum = 0;
do {
    sum = sum + i;
    i += 2;
} while (i <= 88);
System.out.println(sum);

在上述代码中,首先定义一个变量i,用来存储循环初始值11;定义一个sum变量,用来存储循环的总和。之后使用do-while循环,让sum的值加上i的值得出最终的总和,每次循环完成之后再将i的值加2;当i大于88时while条件不满足,循环终止。最后将sum的值输出。
如果回答有帮助,望采纳。