这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 看ADXL345例程遇到的一个C语言问题

共7条 1/1 1 跳转至

看ADXL345例程遇到的一个C语言问题

菜鸟
2013-08-18 14:04:39     打赏

这是一小段代码,BUF是从ADXL345中读取的寄存器值,我的问题是在什么情况下dis_data会小于0,即条件成立后能执行dis_data=-dis_data;这句话!

 

typedef unsigned char  BYTE;
BYTE BUF[8];
int  dis_data;

dis_data=(BUF[1]<<8)+BUF[0];
if(dis_data<0)
{
dis_data=-dis_data;
}

 

谢谢大家!




关键词: ADXL345     例程     遇到     一个     语言     问题    

高工
2013-08-19 09:16:05     打赏
2楼
BUF[1]最高位为1

高工
2013-08-19 09:24:43     打赏
3楼
如果int在你的编译器内定义为32位,dis_data不会小于0,如果是16位,那当BUF[1]的最高位为1时候,dis_data小于0, 把dis_data定义为short型保险

菜鸟
2013-08-19 10:00:16     打赏
4楼

 

dis_data > 32767


专家
2013-08-19 10:40:10     打赏
5楼
我也正在用ADXL345

菜鸟
2013-08-19 19:14:35     打赏
6楼
我这个问题你怎么看!?在例程里面为什么会小于零呢!?

高工
2013-08-19 20:11:17     打赏
7楼

看手册,

这个变量是带符号的


共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]