单片机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.应该是有溢出了。
但这个溢出不应该出现啊。
有人能帮我看看吗? 展开
现在有个程序如下:
//根据所得到的汉字区位码查汉字库中该汉字点阵码的起始地址,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.应该是有溢出了。
但这个溢出不应该出现啊。
有人能帮我看看吗? 展开
3个回答
展开全部
address=((acode-0xa1)*0x5e+(bcode-0xa1))*0x20做一下强制类型转换
address=(long int)((long int)(acode-0xa1)*0x5e+(long int)(bcode-0xa1))*0x20
address=(long int)((long int)(acode-0xa1)*0x5e+(long int)(bcode-0xa1))*0x20
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
51的么?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询