2011-08-16 3 views
2

C++의이 부분을 C#으로 이식하는 데 어려움을 겪고 있습니다. 나는 계속 운영자 '||' 'long'및 'long'유형의 피연산자에는 적용 할 수 없습니다. 그래서 동등한 것이 무엇입니까?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은 거짓이며, 0 이외의 정수 사실이다. C#은 이것을 허용하지 않습니다. (

당신이 명시 적으로 내가 방금 설명한 검사를 수행해야합니다 C#에서 같은 효과를 달성하기 위해, 그래서 대신

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

당신은

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

을 원하는 그리고 사실, 후자는 여전히 완벽하게 수용 때로는 C++에서 명확성을 위해 권장 됨).

+0

빙고, 감사합니다! –