c51中的bit,char的强制类型转换

c51中的bit,char的强制类型转换。
data为非0,,bit强制后,为1。否则为0
data的在char强制后取后8位。

 

(1)强制转换有什么好处?

例如:

unsigned  char x  ;

sbit SDA  = P1^0  ;

1)、要用x来记录p1.0的值,可以用:

for(i=0;i<8;i++)

{

       x  |= (unsigned char )SDA ;

       x <<=1;

}

2)、要用SDA来一位一位传送x的值,可以:

for(i=0;i<8;i++)

{

        SDA = (bit)(x&0x80);

        x <<=1;

}

在进行强制转换时,如果要转换成的格式位数小于原本的位数,则舍弃高位保留低位,比如将int型(16位)的转换成char型(8位),则会舍去高八位,保留int型的低八位,所以结果是0

http://blog.sina.com.cn/s/blog_533f26760102vg0i.html

谭浩强   C语言 第三版

类型转换

如果赋值运算符两边的数据类型不相同,系统将自动进行类型转换,即把赋值号右边的类型换成左边的类型。具体规定如下:

实型赋予整型,舍去小数部分。前面的例子已经说明了这种情况。

整型赋予实型,数值不变,但将以浮点形式存放,即增加小数部分(小数部分的值为0)。

字符型赋予整型,由于字符型为一个字节,而整型为二个字节,故将字符的ASCII码值放到整型量的低八位中,高八位为0。整型赋予字符型,只把低八位赋予字符量。

   自己加注:标准C没有位类型,通过具体实例,模拟SPI,IIC串行按位读写字节时SDA=temp&0x80;或者SDA=(bit)(temp&0x80);是按照bit(0x80) ?bit(true),bit(fals)如果(dat&0x80)结果不为零,0x80不等于true;(dat&0x80)结果不为零,则为false。

数据类型转化灵活设置原则,以事实为依据2020.3.7

数据类型转换

·自动转换:在不同类型数据的混合运算中,由系统自动实现转换,由少字节类型向多字节类型转换。不同类型的量相互赋值时也由系统自动进行转换,把赋值号右边的类型转换为左边的类型

·强制转换:由强制转换运算符完成转换。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值