单片机C语言 long int 与char 运算的问题

我采用的是KEILC编译器,其中LONGINT是4个字节,INT是2个字节,CHAR是1个字节现在有个程序如下://根据所得到的汉字区位码查汉字库中该汉字点阵码的起始地址... 我采用的是KEIL C编译器,其中LONG INT 是4个字节,INT是2个字节,CHAR是1个字节
现在有个程序如下:
//根据所得到的汉字区位码查汉字库中该汉字点阵码的起始地址,acode 区码 bcode 位码
long int find_ledcode_address1(unsigned char acode,unsigned char bcode)
{
long int address=0;
address=((acode-0xa1)*0x5e+(bcode-0xa1))*0x20; //得到该汉字对应的地址
return address;
}

取 ACODE=0XC3,BCODE=0XA1;
运算结果应该是 0x18f80,可实际返回值是0x8f80.应该是有溢出了。
但这个溢出不应该出现啊。
有人能帮我看看吗?
展开
 我来答
游游娱乐
2010-04-20 · TA获得超过322个赞
知道小有建树答主
回答量:382
采纳率:0%
帮助的人:251万
展开全部
你应该强制类型转换一下,把acode和bcode强制转换成long
lyjack2000
2010-04-20 · 超过14用户采纳过TA的回答
知道答主
回答量:33
采纳率:100%
帮助的人:0
展开全部
address=((acode-0xa1)*0x5e+(bcode-0xa1))*0x20做一下强制类型转换
address=(long int)((long int)(acode-0xa1)*0x5e+(long int)(bcode-0xa1))*0x20
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
efenwu
2010-04-20 · TA获得超过421个赞
知道小有建树答主
回答量:186
采纳率:0%
帮助的人:114万
展开全部
51的么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式