C语言中带括号的异或与不带括号的异或有什么区别

C语言中带括号的异或与不带括号的异或有什么区别,c,C,我有一些代码,它在5个第一个数字上用XOR检查chechsum,它应该等于第六个数字。但是,两者之间有什么区别呢 if (n0^n1^n2^n3^n4==n5) return true; else return false; 及 ? 因为第一个运算符有效,而第二个运算符无效。运算符==的优先级高于运算符^。因此,在第一种情况下,C编译器首先执行n4==n5,这会导致1或0,然后它将执行n0..n3和比较结果之间的所有xor运算符 在第二种情况下,的优先级高于“==”。因此,所有xor

我有一些代码,它在5个第一个数字上用XOR检查chechsum,它应该等于第六个数字。但是,两者之间有什么区别呢

if (n0^n1^n2^n3^n4==n5)  return true;
    else return false;

?

因为第一个运算符有效,而第二个运算符无效。

运算符==的优先级高于运算符^。因此,在第一种情况下,C编译器首先执行n4==n5,这会导致1或0,然后它将执行n0..n3和比较结果之间的所有xor运算符

在第二种情况下,的优先级高于“==”。因此,所有xor运算符将首先执行,比较将在最后执行


它解释了程序结果的差异。

C语法使用==建立运算符优先级,其优先级高于^。所以n0^n1^n2^n3^n4==n5等同于n0^n1^n2^n3^n4==n5,这与n0^n1^n2^n3^n4==n5不同


在第一个中,==的操作数是n4和N5查找运算符优先级。。。为什么当我有n0=1E,n1=00,n2=ED,n3=E5,n4=E5,n5=F3时,没有括号时是真的?假括号你说第一个有效,但实际上第二个是对的。这意味着无论是什么计算校验和,您稍后检查是错误的
if ((n0^n1^n2^n3^n4)==n5)  return true;
    else return false;