B.3 checked와 unchecked
프로그램을 작성하다 보면 원하는 대로 결괏값이 나타나지 않을 때가 많이 발생합니다. 예를 들어 다음 코드를 작성하면 256이 아닌 0이 나타납니다.
> byte b = 255; > b++; > b 0
byte 형식은 0부터 255까지 작은 정수를 담을 수 있는 그릇인데, 255인 상태에서 1을 증가시키면 256이 되는 것이 아니라 오버플로가 발생하여 다시 0이 됩니다. C# 컴파일러는 이러한 오버플로 에러는 기본값으로 발생시키지 않습니다.
산술 연산 구문을 checked {} 구문으로 묶어 주면 다음과 같이 오버플로 오류가 생기지 않게 알려주는 오류를 발생시킬 수 있습니다.
> byte b = 255; > checked . { . b++; . } 산술 연산으로 인해 오버플로가 발생했습니다.