智能车制作

标题: 大家能帮我看下是这么原因吗? [打印本页]

作者: yEs、先生    时间: 2013-2-27 21:01
标题: 大家能帮我看下是这么原因吗?
本帖最后由 yEs、先生 于 2013-2-27 21:11 编辑

void  Color_Display(uint i)
{
  uchar m,n;
        m=i>>8;
        n=i;
        Write_Data1(m,n);
}
其中i是个16位数据,把16位数据的高八位与低八位分别取出来放进m、n   
这个程序在KEIL上编译没有警告,为什么在Codewarrior上警告中间两行 possible loss of data ?  要这么修改才能消除警告呢?谢谢大神们帮我看看


作者: xc229876115    时间: 2013-2-27 21:06
m右移8位就是除以256.你定义m为无符号型,即m最大为255,所以可能丢失数据
作者: yEs、先生    时间: 2013-2-27 21:09
xc229876115 发表于 2013-2-27 21:06
m右移8位就是除以256.你定义m为无符号型,即m最大为255,所以可能丢失数据

这个函数就是要分别取出高八位与低八位,那要怎么才能消除警告呢

作者: ganlei    时间: 2013-2-27 21:28
yEs、先生 发表于 2013-2-27 21:09
这个函数就是要分别取出高八位与低八位,那要怎么才能消除警告呢

强制转换

作者: yEs、先生    时间: 2013-2-27 21:29
ganlei 发表于 2013-2-27 21:28
强制转换

就是不管警告吗

作者: ganlei    时间: 2013-2-27 21:30
yEs、先生 发表于 2013-2-27 21:29
就是不管警告吗

转换了就没有警告了
作者: zjcxsys    时间: 2013-3-5 11:38
m=(uchar)(i>>8);




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2