3回答

0收藏

[经验] 小知识,51单片机C语言中<<=和|=的意思是什么?

51单片机 51单片机 2932 人阅读 | 3 人回复 | 2012-11-16

for(i=0;i<8;i++)        
                   {
                              
                           U8FLAG=2;
                           while((!P2_0)&&U8FLAG++);
                    Delay_10us();
                                Delay_10us();
                                Delay_10us();
                            U8temp=0;
                    if(P2_0)U8temp=1;
                                U8FLAG=2;
                                while((P2_0)&&U8FLAG++);
                           //超时则跳出for循环                           
                           if(U8FLAG==1)break;
                          //判断数据位是0还是1     
                             
                               // 如果高电平高过预定0高电平值则数据位为 1
                           
                                U8comdata<<=1;
                           U8comdata|=U8temp;        //0
                    }//rof



解答

U8comdata<<=1相当于 U8c
omdata= U8comdata<<1,
U8comdata|=U8temp相当于  U8comdata = U8comdata | U8temp。

类似的还有:+=、  -=、  *= 、  /= 、%=、>>=、&=、~= 、 ^=。
这在C语言中叫做复合赋值运算符。格式如下:
变量   复合赋值运算符   表达式
解释:首先对变量进行某种运算(运算符就是"="前的运算符,运算对象就是"="后面的表达式或变量或常数),然后再将结果赋值回该变量(就是“=”)。

我就是QQ哥,QQ哥就是我!
https://www.cirmall.com/bbs/?fromuser=QQ%E5%93%A5
分享到:
回复

使用道具 举报

回答|共 3 个

倒序浏览

沙发

小鸟_愤怒

发表于 2012-11-16 14:27:44 | 只看该作者

静心  简单  认真  专注
板凳

QQ哥

发表于 2012-11-16 14:32:03 | 只看该作者

小鸟愤怒 发表于 2012-11-16 14:27
,小tap

yes。。
我就是QQ哥,QQ哥就是我!
https://www.cirmall.com/bbs/?fromuser=QQ%E5%93%A5
地板

huyun-397301

发表于 2012-11-21 07:43:29 | 只看该作者

<<=是左移并复制 |=是做位或然后赋值
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条