综合技术
直播中

赵护林

8年用户 240经验值
私信 关注
[问答]

为什么负数乘小数输出的是正数?

float i_buff,res;
int res1;
uint8_t cbuff[4];
buff=gather_i();
res1=(int)buff;
i_buff=(float)res1*0.00305176;      
if(i_buff<2 && i_buff>0)
  i_buff=0;
sys_var[1]=i_buff*10.0/1;
sys_var[1]为u16;
为什么输出的为正数

回帖(6)

臧超楠

2019-11-4 09:02:34
单步跟踪看问题,很容易找到问题点
举报

李正阳

2019-11-4 09:12:09
sys_var[1]为u16,就是说是无符号数据啦,当然是正数!
举报

陈玉英

2019-11-4 09:26:29
不好意思啊,没有表达清楚。
res1 是一个负数,它乘小数后变成一个正数,也就是i_buff成了正数,相当于把符号位也乘了。
sys_var[1]最高位成了0
举报

张利

2019-11-4 09:33:45
怎么看出来i_buff成正数了?打印i_buff了?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分