永发信息网

short b; short a =(signed short)(signed char)(unsigned char)(((unsigned short)b)/0

答案:1  悬赏:0  手机版
解决时间 2021-03-07 06:57
  • 提问者网友:暗中人
  • 2021-03-06 20:48
short b; short a =(signed short)(signed char)(unsigned char)(((unsigned short)b)/0x100);
最佳答案
  • 五星知识达人网友:孤独入客枕
  • 2021-03-06 22:09
这个代码其实简单的就是b=a/256
只是为了可能存在的精度丢失转化了很多很多次,也可能是为了消除pclint
unsigned char时候无符号整形 最大可以表示成255
signed char 有符号单字节整形 最大 127
signed short 有符号双字节整形 最大32767
第一步就是把b转化为unsgined short 除0x100后转化为unsinged char 然后再变为signed char
最后变成signed short,
可能有疑问 为什么不直接从unsinged char转化为signed short呢,这个一般情况下是可以的
但是特殊情况能会出错比如 unsigned char表述的数值大于 128 也就是第一位是1,可能根据编译器不同得到的结果不一样,不详细解释否则会晕。。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯