| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1013 人关注过本帖
标题:有个错误弄不明白
取消只看楼主 加入收藏
daisyzhou45
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2006-2-10
收藏
 问题点数:0 回复次数:6 
有个错误弄不明白
if (eight_to_24(USART0_Receive(),USART0_Receive(),USART0_Receive())== E_pc_write_cpu)
finish_report(write_cpu);//接收结束指令,发送完成报告
else ERROR_handle(end_error);//没有接收到结束指令,发送错误报告

warning:comparison is always false due to limited range of data type

这是为什么?

相关的程序在下面:
定义一个函数,分成两个8位传送16位的数据

long eight_to_24(unsigned char eight_high,unsigned char eight_mid,unsigned char eight_low)//将数据的低位和高位传进函数
{
unsigned long high=0;
unsigned int mid=0;
high=(long)eight_high;
mid=(int)eight_mid;
return(eight_low+(eight_mid<<8)+(high<<16)); //返回组合好后的数值

}

unsigned char USART0_Receive( void )
{

return (0x34);
}
搜索更多相关主题的帖子: cpu eight Receive char unsigned 
2006-02-10 10:47
daisyzhou45
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2006-2-10
收藏
得分:0 
补充一下:
在头文件中:
#define E_pc_write_cpu 0x343434

2006-02-10 10:57
daisyzhou45
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2006-2-10
收藏
得分:0 
确定有啊,长度是1个BYTE,范围是0-256


2006-02-10 13:07
daisyzhou45
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2006-2-10
收藏
得分:0 
if (eight_to_24(USART0_Receive(),USART0_Receive(),USART0_Receive())== E_pc_write_cpu)
警告是针对这句的,说:eight_to_24(USART0_Receive(),USART0_Receive(),USART0_Receive())== E_pc_write_cpu
这个总是不成立的,另为两个是输出结果的报告,很简单的


2006-02-10 13:23
daisyzhou45
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2006-2-10
收藏
得分:0 
左移8位的是 int 型,int空间 2byte
左移16位的是long 型啊 long空间4byte

2006-02-10 14:26
daisyzhou45
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2006-2-10
收藏
得分:0 
后面的没有问题,结果也都是对的,但是这个报告是错的,本来是正确,它都给你报错,这程序就用不了了

不过还是很感谢你的热心帮助

2006-02-10 16:37
daisyzhou45
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2006-2-10
收藏
得分:0 
我运行也没有错,是警告信息
我也怀疑过是编译器的问题,现在还没确认



2006-02-11 12:17
快速回复:有个错误弄不明白
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.081184 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved