C中的解析错误

我正在做一些按位操作的家庭作业,它说我的代码有一个“解析错误”我假设它的语法或其他东西……但我找不到丢失的分号或任何东西。 你能否发现为什么我可能会遇到这个问题?

int isGreater(int x, int y) { int xSign = (x>>31); int ySign = (y>>31); int check1 = (xSign & ySign) | (~xSign & ~ySign); int same = ( x + ((~y) + 1) )>>31; same = !(same & 0x1); int check2 = (check1 & same) | (~check1 & !xSign); int equal = (!(x ^ y))<>31; return (equal & 0) | (~equal & check2); } 

必须有一些可疑的东西。 也许你的编辑将<<>>与一些unicode字符«»冲突。

或者你正在用某个空格写< <> > 。 解析然后看到两个不同的标记,例如<<而不是一个<<

所以,我写了这么一点代码 – 它看起来和你做的完全一样……我不知道这是否有帮助,但是它告诉你哪个更大,而不是它们是否相等虽然。 不确定它是否有助于做任何事情,但缩短你的代码。

 #include  int isGreater(int x, int y) { return (y + (~x +1)) >> 31 & 1; } int main(void) { int x = 1; int y = 2; int greater = isGreater(x,y); if(greater == 1) { printf("%i > %i \n", x, y); } else { printf("%i < %i \n", x, y); } return 0; }