2012-04-14 21 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

完全なエラーメッセージを投稿してください。 –

+0

行番号を含む正確なエラーメッセージは何ですか? –

+0

bits.c:294:解析エラーです。行294は、2行目から最後の行に転記されます。私はUnixで働いていますので、それは私に多くの詳細を与えません – Guambler

答えて

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

何か怪しいものが続かなければなりません。おそらくあなたのエディタは、<<または>>といくつかのユニコード文字«または»にぶつかりました。

逆の場合は、< <または> >と書かれています。パーズは、2つの別個のトークン、例えば、<<の代わりに<および<を見る。

関連する問題