Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 정수 오버플로 확인

<시간/>

유일한 안전한 방법은 오버플로가 발생하기 전에 확인하는 것입니다. 하지만 정수 오버플로를 확인하는 몇 가지 해킹 방법이 있습니다. 따라서 unsigned int 추가에서 오버플로를 감지하려는 경우 결과가 실제로 추가된 값보다 작은지 확인할 수 있습니다. 예를 들어,

예시

unsigned int x, y;
unsigned int value = x + y;
bool overflow = value < x; // Alternatively "value < y" should also work

이는 x와 y가 모두 unsigned int이고 추가되고 오버플로되면 값이 둘 중 하나보다 클 수 없기 때문입니다. 이 값의.

또 다른 방법은 CPU의 오버플로 플래그에 액세스하려고 시도하는 것입니다. 일부 컴파일러는 테스트할 수 있는 액세스 권한을 제공하지만 이는 표준이 아닙니다.