컴파일러 경고(수준 1) C4319
'~': 'type1'을 더 큰 크기의 'type2'로 확장하는 0
(비트 보수) 연산자의 ~ 결과는 부호가 없으며 더 큰 형식으로 변환될 때 0으로 확장됩니다.
예시
다음 예제 ~(a - 1)
에서는 부호 없는 32비트 long 식으로 평가된 다음 0개의 확장으로 64비트로 변환됩니다. 따라서 예기치 않은 결과가 발생할 수 있습니다.
// C4319.cpp
// compile with: cl /W4 C4319.cpp
int main() {
unsigned long a = 0;
unsigned long long q = 42;
q = q & ~(a - 1); // C4319 expected
}