2011-08-16 11 views
2

C++のこの部分をC#に移植するのは苦労しています。私はオペレータ '||' '長い'と '長い'の型のオペランドには適用できません。では、それと同等のものは何でしょうか?C++スニペットからC#ビットワイズ演算子

while ((c <= combinations) && ((round_set & (1 << cList[c].one)) || (round_set & (1 << cList[c].two)) || (cUsed[c]))) 
        { 
        fprintf(stdout, "C: %d\n", c); 
        c++; 
        } 

while ((c <= combinations) && ((round_set & (1 << cList[c].one)) || (round_set & (1 << cList[c].two)) || (cUsed[c]))) 
          { 
           Console.WriteLine("C: {0}", c); 

           c++; 
          } 

答えて

6

C++は、C#のとは異なり、それは任意の整数0がfalseで、かつ0以外の任意の整数が真のブール値、アドホック、あたかもあなたが整数値を扱うことができます。 C#ではこれを許可していません。あなたが明示的に私が説明したチェックを行う必要があり、その代わりに

if((expr) || ...) { } 

のあなたは

if((expr) != 0 || ...) { } 

をしたい、実際に、後者はまだ完全に受け入れているC#で同じ効果を達成するために

(時には明確にするために推奨されています)。

+0

ビンゴ、ありがとうございます! –

関連する問題