package com.Damon_;public class Parity { public static void main(String[] args){ java.util.Scanner sco = new java.util.Scanner(System.in); int temp=sco.nextInt(); int num=1,sum1=0,sum2=0; do{ if(num%2==0){ sum1=sum1+num; num++; } else{ sum2=sum2+num; num++; } } while(num<=temp); System.out.println(temp+"以内偶数和为"+sum1+"\n"+temp+"以内奇数和为"+sum2); }}无聊给temp赋值了个987654321,结果:987654321以内偶数和为2087916184987654321以内奇数和为-1713223951为什么奇数和是负数?498746313 结果:498746313以内偶数和为-2029931276498746313以内奇数和为-1780558119都是负数。小一点的数好像都不会出现问题
1 回答
已采纳
Coda
TA贡献32条经验 获得超5个赞
你计算的数据已经int溢出了。
int 类型能够表示的最大值为 2的31次方-1 的常量。 int 类型能够表示的最小值为 -2的31次方 的常量。
在计算机中用二进制表示所有的信息,这个符号的区别就看首位。首位如果是 0,就是正的,1 就是负的。数值溢出就会出现这个现象。Java 中的 int 总共就 32 位,正数上限的情况首位也只能是 0,其他位都可以是 1(就是 2^31-1 的情况)。但是如果正数过大了,例如 2^31,计算机把首位变成 1,把它按照正常的方式输出了,于是就成了负的。
添加回答
举报
0/150
提交
取消