用AVR单片机C语言编程问题
DDRD|=(1<=PD1)和DDRD|=(1<PD1)和DDRD|=(1<<PD1)有什么区别...
DDRD |=(1<=PD1)和DDRD |=(1<PD1)和DDRD |=(1<<PD1)有什么区别
展开
1个回答
展开全部
表达式1<=PD1和1<PD1都是判断,其值不是1就是0,这里PD1是一个宏,其值实际上是1,所以表达式1<=PD1的值为1,而表达式1<PD1的值为0,所以
DDRD |=(1<=PD1)等效于DDRD |=1
DDRD |=(1<PD1) 等效于DDRD |=0
1<<PD1这里<<是左移运算符,1<<PD1即1<<1,即左移一位,结果为2
所以DDRD |=(1<<PD1)等效于DDRD |=2
从上述可得三者完全不同
lz需要恶补C语言基础和二进制位运算的基础知识
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询