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;
}