我有这个C代码,当我使用调试器执行它时if和else块都没有运行
以下是代码:
if(P2IN & BIT4 == BIT4 ){
car_lock ^= BIT0;
is_pressed = 1;
}else{
is_pressed = 0;
}
此时代码中,P2IN = 00010000
似乎if或else块都没有运行,我缺少什么?
答案 0 :(得分:6)
问题出在您的if
声明中。 ==
运算符的优先级高于&
,因此实际评估的是:
(P2IN & (BIT4 == BIT4))
您需要将代码更改为:
if ((P2IN & BIT4) == BIT4)
有一个关于运算符优先级here的有用网页。