请教java小问题?
这个问题看似简单,但如果不实际测试可能还真会搞错,最好的办法是写个Demo将各个值输出,就能揣摩出其中的意思,咱们结合程序及输出来分析下:
在Java中整形是有数据范围的,其中最小值:Integer.MIN_VALUE是-2147483648。如果在此基础上再减1,就会出现溢出现象,从输出结果看已经变成:2147483647。而(i-1L)返回是long长整形,再减去1,不会发生溢出正常计算,结果是:-2147483649。
(i-1):2147483647
(i-1L):-2147483649
所以,(i-1) + (i-1L)结果就是:-2。
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有