如何在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) )