如何在C中先运行优先级较低的操作,然后再运行优先级较高的操作

如何在C中先运行优先级较低的操作,然后再运行优先级较高的操作,c,operator-precedence,C,Operator Precedence,输出: 最右边的位不同 预期: 最右边的位是相同的 这里==是在&之前运行的,这是不可取的。我可以使用另一个变量来解决这个问题,但不使用另一个变量是这个赋值的重点…添加更多括号: #include <stdio.h> int main() { short int a,b; a=1; b=1; if ( (a | 65534)&1 == (b | 65534)&1 ) { printf("The right

输出: 最右边的位不同

预期: 最右边的位是相同的

这里==是在&之前运行的,这是不可取的。我可以使用另一个变量来解决这个问题,但不使用另一个变量是这个赋值的重点…

添加更多括号:

#include <stdio.h>

int main()
{
    short int a,b;
    a=1;
    b=1;
    if ( (a | 65534)&1 == (b | 65534)&1 )
    {
      printf("The rightmost bit is the same");  
    }
    else
    {
        printf("The rightmost bit is different");
    }
    return 0;
}


}

a&65534&1==b&65534&1这不是圆括号的全部用途吗?x&65534&1总是0给定您正在打印的内容,预期的测试是如果a&1==b&1为什么要将65534放入组合中?奇怪的是,您在不需要圆括号的地方有圆括号,但在需要圆括号的地方没有圆括号。所以我认为这个练习的正确答案是移动括号:如果a&65534&1==b&65534&1
if ( ((a & 65534)&1) == ((b & 65534)&1) )