2012-04-14 46 views
-1

我正在做一些按位操作的作業,它說我的代碼有一個「解析錯誤」 我假設它的語法或某事......但我找不到一個缺少的分號或任何東西。 您能否介紹一下爲什麼我可能會遇到問題?解析錯誤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>>31; 
     return (equal & 0) | (~equal & check2); 
} 
+4

請發佈完整的錯誤信息。 – 2012-04-14 04:22:37

+0

什麼是確切的錯誤信息,包括行號? – 2012-04-14 04:22:51

+0

bits.c:294:解析錯誤。第294行是發佈的倒數第二行。我在Unix上工作,所以它不給我很多細節 – Guambler 2012-04-14 04:25:32

回答

0

所以,我寫的代碼,這一點 - 它似乎做同樣的事情,你不...我不知道如果這有助於與否,但它會告訴你這是更大的,如果他們是平等的,但不是。不確定它是否會幫助你做任何事情,但是縮短你的代碼。

#include <stdio.h> 

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; 
} 
1

一定有什麼可疑的事情發生。也許你的編輯將<<>>與某個Unicode字符«»衝突。

或者您正在編寫< <> >的反面,並在某處顯示空格。然後解析看到兩個不同的標記,例如<<而不是一個<<