为了账号安全,请及时绑定邮箱和手机立即绑定

short + byte 出现奇怪的事情

short + byte 出现奇怪的事情

一只甜甜圈 2019-04-07 11:18:42
这几天在整音频相关的东西,无意间发现了一个有趣的事情javaSystem.out.println(String.format("0xFF00+0xF0=%04X",(short)((short)0xFF00+(byte)0xF9)));显示的结果有点出乎意外,所以我有换成了C/C++cppshorta=0xFF00;charb=0xF0;printf("a+b=%X",(short)(a+b));没错,结果跟java的一样,都是FEF0一直以来,俺都是尽量不在代码里面显式类型转换的,从教科书上来看,byte/char比short类型低级,在表达式内部应该会隐式类型转换的可是换成两个同样是short类型的数值相加才能得到希望的结果,这是什么gui
查看完整描述

2 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

shorta=0xFF00;//-256
charb=0xF0;//-16;
所以a+b是-272,也即FEF0。
注意char类型的0xF0,强制转型成short后不等于0x00F0。你需要的是unsignedchar。
                            
查看完整回答
反对 回复 2019-04-07
  • 2 回答
  • 0 关注
  • 319 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信