搞了一小时的测试加百度,没找到答案,希望各位大大能解翻译下
首先,问题是这样的:(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,没有用纯粹的编译器测试,不知道是不是这个的原因,
求解
星小梦
相关分类