一个有意思的类型转换问题double转int

搞了一小时的测试加百度,没找到答案,希望各位大大能解翻译下

首先,问题是这样的:(int)(0x7FFFFFFF * 2.0)

在java和C++中:0x7FFFFFFF*2.0都是4.294967294E9和4.29497*e+009,有效数字就不去说了,总之都是一个同样的值

但是当进行了int的强制类型转换后,就出现了问题

在C++中是按正常的(照我看来)在转换,输出为-2,从低位进行转换

不过在Java中,你猜输出是多少,居然是2147483647,没错,就是0x7FFFFFFF,居然是从高位开始算4个字节,省去最后的0

我百度了,没百度到这个原因,这是Java和c++的类型转换不同之处?

对了,我全是在ide中测试的,java是eclipseNeon,C++是vs2013,没有用纯粹的编译器测试,不知道是不是这个的原因,

求解

_百慕大
浏览 2797回答 3
3回答

星小梦

我也不懂,不知为何,看到你这个评论好想把你灭了
打开App,查看更多内容
随时随地看视频慕课网APP