单片机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];
} 展开
高字节在前,低字节在后,然后我想赋值给一个整形,让它变成一个数,下面程序
对不对?
是不是不可以直接字符型给整形赋值的啊?
unsigned char char_1[]={1,2,3,4};
unsigned int lamp1;
void BCD_1() //处理数据
{
lamp1=chuli[0];
lamp1=lamp1<<8;
lamp1=lamp1+chuli[1];
} 展开
展开全部
你的程序是没错的。
可以用字符型给整型赋值,但是就不能用整型给字符型赋值了(有可能会发生错误),在这里要考虑一种数据类型所能表示的范围,例如: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,发生意想不到的错误
给你个建议,自己多用编程器进行调试,能加深理解的。
可以用字符型给整型赋值,但是就不能用整型给字符型赋值了(有可能会发生错误),在这里要考虑一种数据类型所能表示的范围,例如: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,发生意想不到的错误
给你个建议,自己多用编程器进行调试,能加深理解的。
展开全部
可以把字符数赋给整形
但你的程序最后的语句不对 lamp1=lamp1+chuli[1];
这样会出现错误
你可以让他俩个相或 lamp1=lamp1 || chuli[1];
lamp1后8位为0哦
我在DS18B20中这样用过
但你的程序最后的语句不对 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];
这样对不对啊?
追答
对,也行
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C语言中,字符char还有一个意义就是ascII码值,所以
int
n
='c';
是把c的
ascII码值赋给n,
n
以后再去与
d等等比较
也是比较的是ascII码值.差异是:char表示的值应该全部能赋值给int,但是int的值却不能全部转化到char;原因应该就是(楼上的回答:):字符型占一个字节,而整型占两个字节
int
n
='c';
是把c的
ascII码值赋给n,
n
以后再去与
d等等比较
也是比较的是ascII码值.差异是:char表示的值应该全部能赋值给int,但是int的值却不能全部转化到char;原因应该就是(楼上的回答:):字符型占一个字节,而整型占两个字节
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
整数的时候用int,int是有范围的,注意不要溢出,根据情况用long
int和short
int,字字符的时候用char,注意字符有对应的ASCII码,可以百度下ASCII码,望采纳
int和short
int,字字符的时候用char,注意字符有对应的ASCII码,可以百度下ASCII码,望采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |