컴파일러 경고(수준 1) C4293
'operator': 시프트 카운트가 음수이거나 너무 크고 정의되지 않은 동작
시프트 수가 음수이거나 너무 크면 결과 이미지의 동작이 정의되지 않습니다.
설명
이 문제를 해결하려면 첫 번째 피연산자의 캐스트를 사용하여 결과 형식의 크기로 확장할 수 있습니다.
예시
다음 샘플에서는 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;
}