黑马程序员技术交流社区

标题: 这代码为什么不对 [打印本页]

作者: 王宝生    时间: 2013-6-9 17:46
标题: 这代码为什么不对
本帖最后由 王宝生 于 2013-6-10 08:24 编辑

int a=long.MaxValue;
int b=1;
long c=a+b;
结果c出现了负数。这里long c明明能够装的下结果啊,怎么还溢出呢。
作者: 蚂蚁搬家    时间: 2013-6-9 17:52
int a=long.MaxValue;   这里你取得是long类型的最大值,
b的值是1,最大值加上1就是负数啊,
比如01111111加上00000001之后的结果是10000000,这不就是负数嘛!

作者: fcyan86    时间: 2013-6-9 18:09
本帖最后由 fcyan86 于 2013-6-9 18:10 编辑

你那能编译通过么,int a=long.MaxValue不进行强制转换不行的吧,
要么int a=int.MaxValue;
就不出负数了
作者: 王宝生    时间: 2013-6-9 19:52
fcyan86 发表于 2013-6-9 18:09
你那能编译通过么,int a=long.MaxValue不进行强制转换不行的吧,
要么int a=int.MaxValue;
就不出负数了 ...

写错了,哈哈,改成int就好了。你进八期群了么?
作者: fcyan86    时间: 2013-6-9 22:08
王宝生 发表于 2013-6-9 19:52
写错了,哈哈,改成int就好了。你进八期群了么?

你进了?我没呢
作者: popoluno    时间: 2013-6-10 10:18
我试了一下,改成int.MaxValue,就没有问题了
作者: 关关雎鸠    时间: 2013-6-10 18:50
吓死了我。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2