Java代码中short变量b输出为2130的运算过程与原因解析
Java代码short类型输出结果解释
前置公共运算步骤
首先计算所有表达式公共的括号内求和项x + y + z:
Java中byte、short类型参与运算时会自动提升为int类型,三个变量原始值分别为byte x = 126、short y = 32734、int z = 32789,求和结果为:126 + 32734 + 32789 = 65649(int类型)
long变量a的输出验证
运算式50000L + 10L * (x + y + z)的计算过程:
- 先执行乘法:
10L * 65649 = 656490(long类型,无精度损失) - 再执行加法:
50000L + 656490 = 706490,和运行输出一致。
short变量b输出2130的核心原因
首先计算强转前的int类型结果:1000 + 10 * (x + y + z) = 1000 + 10 * 65649 = 657490
接下来执行(short)强转操作,遵循Java的基础类型转换规则:
Java中
short是16位有符号整数,取值范围为-32768 ~ 32767。将32位int强转为16位short时,会直接截断高位二进制位,仅保留低16位的值,等效于对2^16 = 65536取模。
对657490执行取模运算:657490 % 65536 = 657490 - 65536 * 10 = 2130
2130在short的合法正数取值范围内,因此最终输出结果为2130。
内容的提问来源于stack exchange,提问作者sahilcrazyy
相关产品推荐
相关产品推荐

