明显会造成溢出。 两个整数相加的结果超出的int类型的变量范围。 若将两个整数都转换成long类型进行相加,结果也转换成long型,即可得到正确的结果。 如果楼主想弄明白是否溢出的话,可以将这两个整数转换成二进制数进行相加,然后查看相加的结果。 1234578900 ==> 0100 1001 1001 0110 0010 1101 1101 0100 987543210 ==> 0011 1010 1101 1100 1011 0110 1010 1010 __________________________________________________ 2222122110 ==> 1000 0100 0111 0010 1110 0100 0111 1110 很明显,两数相加之和溢出到符号位了,使得正数变成了负数。 由于负数在计算机中采用的是补码进行表示的,所以,这个负数的值应该是去掉符号位后各位取反后再加一。 1 000 0100 0111 0010 1110 0100 0111 1110 相加的结果,首位是符号位 1 111 1011 1000 1101 0001 1011 1000 0001 各bit位取反 1 111 1011 1000 1101 0001 1011 1000 0010 取反后,再加一 ———————————————————— - 0x7 0xB 0x8 0xD 0x1 0xB 0x8 0x2 转成十六进制数 ____________ - 0x7B8D1B82 十六进制数的表示 ____________ -2072845186 十进制数的表示
62,614
社区成员
307,319
社区内容
加载中
试试用AI创作助手写篇文章吧