2011-08-16 90 views
2

我很難將這部分C++移植到C#中。我不斷收到Operator'||'不能應用於'long'和'long'類型的操作數,這是合理的。那麼等值是什麼?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是假的,而且比其他0任何整數都是如此。 C#不允許這樣做。

爲了實現在C#中同樣的效果,你必須明確地執行我剛纔所描述的檢查,所以不是

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

你想

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

而事實上,後者仍然是完全可以接受的(有時爲了清晰起見鼓勵)使用C++。

+0

賓果,謝謝! –