CS0675 de aviso (nível 3) do compilador

Bit a bit- ou operador usado em um operando de assinatura estendida; Considere a conversão para um tipo menor sem assinatura primeiro

O compilador implicitamente mais largo e assinatura estendida uma variável e, em seguida, usado o valor resultante em uma operação de OR bit a bit.Isso pode resultar em comportamento inesperado.

O exemplo a seguir gera 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
      // try the following line instead
      // long value = (((long)hi) << 32) | ((uint)lo);   // correct
   }
}