Поделиться через


Предупреждение компилятора (уровень 1) C4293

Оператор: число сдвигов отрицательное или слишком большое, неопределенное поведение

Если число сдвигов отрицательно или слишком велико, поведение результирующего изображения не определено.

Замечания

Чтобы устранить эту проблему, можно использовать приведение на первом операнде, чтобы развернуть его до размера типа результата.

Пример

В следующем примере возникает ошибка C4293 и показаны способы ее устранения:

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