为什么这个if语句没有运行?

时间:2016-12-04 01:15:54

标签: c msp430

我有这个C代码,当我使用调试器执行它时if和else块都没有运行

以下是代码:

if(P2IN & BIT4 == BIT4 ){
    car_lock ^= BIT0;
    is_pressed = 1;
}else{
    is_pressed = 0;
}

此时代码中,P2IN = 00010000

似乎if或else块都没有运行,我缺少什么?

1 个答案:

答案 0 :(得分:6)

问题出在您的if声明中。 ==运算符的优先级高于&,因此实际评估的是:

(P2IN & (BIT4 == BIT4))

您需要将代码更改为:

if ((P2IN & BIT4) == BIT4)

有一个关于运算符优先级here的有用网页。