Udostępnij za pośrednictwem


Ostrzeżenie kompilatora (poziom 1) C4293

Operator: ujemna liczba zmian lub zbyt duża, niezdefiniowane zachowanie

Jeśli liczba zmian jest ujemna lub zbyt duża, zachowanie wynikowego obrazu jest niezdefiniowane.

Uwagi

Aby rozwiązać ten problem, możesz użyć rzutowania na pierwszym operandzie, aby rozwinąć go do rozmiaru typu wyniku.

Przykład

Poniższy przykład generuje kod C4293 i pokazuje sposoby jego naprawy:

// C4293.cpp
// compile with: /c /W1
unsigned __int64 combine (unsigned lo, unsigned hi)
{
   return (hi << 32) | lo;   // C4293

   // In C, try the following line instead:
   // return ( (unsigned __int64)hi << 32) | lo;
   // In C++, try this line instead:
   // return (static_cast<unsigned __int64>(hi) << 32) | lo;
}