2012-04-14 23 views
-1

Ich mache einige bitweise Operation Hausaufgaben und es sagt mein Code hat einen "Parse-Fehler" Ich nehme an, es ist die Syntax oder etwas ... aber ich kann kein fehlendes Semikolon finden oder irgendwas. Könnten Sie bitte herausfinden, warum ich das Problem bekommen könnte?Parse Fehler in 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

Bitte schreiben Sie die vollständige Fehlermeldung. –

+0

Was ist die genaue Fehlermeldung, einschließlich der Zeilennummer? –

+0

bits.c: 294: Parse-Fehler. Zeile 294 ist die vorletzte Zeile. Ich arbeite in Unix, also gibt es mir nicht viele Details – Guambler

Antwort

0

Also, ich dieses kleine Stück Code geschrieben - es genau die gleiche Sache zu tun scheint, dass Sie nicht ... Ich weiß nicht, ob das hilft oder nicht, aber es sagt Ihnen, welche größer ist, nicht wenn sie gleich sind. Ich bin mir nicht sicher, ob es Ihnen helfen wird, Ihren Code zu verkürzen.

#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

Da muss etwas fischig los sein. Vielleicht hat Ihr Editor die << oder >> mit einem Unicode-Zeichen « oder » in Konflikt gebracht.

Oder die inverse Sie schreiben < < oder > > mit einem Leerzeichen irgendwo. Die Syntaxanalyse sieht dann zwei unterschiedliche Token, z. B. < und < statt einer <<.