单片机C语言整型和字符型

程序里面我接收到两个8位字符型数据,它其实就是一个数据的高八位和低八位。高字节在前,低字节在后,然后我想赋值给一个整形,让它变成一个数,下面程序对不对?是不是不可以直接字... 程序里面我接收到两个8位字符型数据,它其实就是一个数据的高八位和低八位。
高字节在前,低字节在后,然后我想赋值给一个整形,让它变成一个数,下面程序
对不对?
是不是不可以直接字符型给整形赋值的啊?
unsigned char char_1[]={1,2,3,4};
unsigned int lamp1;
void BCD_1() //处理数据
{
lamp1=chuli[0];
lamp1=lamp1<<8;
lamp1=lamp1+chuli[1];
}
展开
 我来答
libiqun
2011-05-23
知道答主
回答量:5
采纳率:0%
帮助的人:5.8万
展开全部
你的程序是没错的。
可以用字符型给整型赋值,但是就不能用整型给字符型赋值了(有可能会发生错误),在这里要考虑一种数据类型所能表示的范围,例如:char a;//a的表示范围-127~128,
int b;//b的表示范围为-32767~32768
如果:a=100;
b=a;//a的值在int类型的表示范围之内,因此b=100
如果:b=1000;
a=b;//因为1000超出了char类型的表示范围,因此a!=1000,发生意想不到的错误
给你个建议,自己多用编程器进行调试,能加深理解的。
lijia7906288
2011-05-23 · TA获得超过127个赞
知道小有建树答主
回答量:137
采纳率:0%
帮助的人:97.7万
展开全部
可以把字符数赋给整形
但你的程序最后的语句不对 lamp1=lamp1+chuli[1];
这样会出现错误
你可以让他俩个相或 lamp1=lamp1 || chuli[1];
lamp1后8位为0哦
我在DS18B20中这样用过
更多追问追答
追问
uint lamp1;
lamp1=chuli[3];
lamp1=lamp1<<8;
lamp1=lamp1&&0xFF00;
lamp1=lamp1||chuli[4];
这样对不对啊?
追答
对,也行
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
47okey
2011-05-23 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5900
采纳率:75%
帮助的人:2314万
展开全部

可以的。刚好昨晚我也这样做过,还用了keil试了下。

刚试了用a||b的结果a变成0x0001了

追问
是啊,我用||的时候也是出错了,改用+就对了,不知道什么原因
追答
改天写个程序试试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
镇向晨吉豫
2019-01-04 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:28%
帮助的人:824万
展开全部
C语言中,字符char还有一个意义就是ascII码值,所以
int
n
='c';
是把c的
ascII码值赋给n,
n
以后再去与
d等等比较
也是比较的是ascII码值.差异是:char表示的值应该全部能赋值给int,但是int的值却不能全部转化到char;原因应该就是(楼上的回答:):字符型占一个字节,而整型占两个字节
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
繁芳菲门饮
2019-11-26 · TA获得超过3.4万个赞
知道大有可为答主
回答量:1.2万
采纳率:28%
帮助的人:651万
展开全部
整数的时候用int,int是有范围的,注意不要溢出,根据情况用long
int和short
int,字字符的时候用char,注意字符有对应的ASCII码,可以百度下ASCII码,望采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式