C 位测试。计算位

C 位测试。计算位,c,bit,C,Bit,为什么它会打印4700101111的第6位是1。从右侧开始计数,从1开始 #include <stdio.h> #include <stdlib.h> int main() { int mask1,mask2; //bit testing; mask1=1<<3; mask2=1<<6; if(47&mask1!=0)

为什么它会打印4700101111的第6位是1。从右侧开始计数,从1开始

 #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
        int mask1,mask2;

        //bit  testing;
        mask1=1<<3;
        mask2=1<<6;
        if(47&mask1!=0)
            printf("\n bit number 3 is 1");
        else
            printf("\n bit number 3 is 0");
        if(47&mask2!=0)
            printf("\n bit number 6 is 1");
        else
             printf("\n bit number 6 is 0");

        return 0;
    }
位AND运算符&的优先级低于不等式运算符!=。因此:

47&mask1!=0
同:

47&(mask1!=0)
添加括号,如下所示:

(47&mask1)!=0
你会得到预期的结果。确保对mask2执行相同的检查。

按位AND运算符&的优先级低于不等式运算符!=。因此:

47&mask1!=0
同:

47&(mask1!=0)
添加括号,如下所示:

(47&mask1)!=0
你会得到预期的结果。确保对mask2进行同样的检查