コンパイラの警告 (レベル 3) CS0675

Bitwise-or 演算子が sign-extended オペランドで使用されています。まず、小さい符号なしの型をキャストしてみてください。

コンパイラは変数を暗黙に拡張して符号拡張した後、結果の値をビットごとの OR 演算で使いました。 これにより、予測不可能な動作を起こすことがあります。

次の例では CS0675 が生成されます。

// CS0675.cs  
// compile with: /W:3  
using System;  
  
public class sign  
{  
   public static void Main()  
   {  
      int hi = 1;  
      int lo = -1;  
      long value = (((long)hi) << 32) | lo;              // CS0675, value contains -1 (0xffffffff_ffffffff)
      // try the following line instead  
      // long value = (((long)hi) << 32) | ((uint)lo);   // correct, value contains 8589934591 (0x00000001_ffffffff)
   }  
}