checked 문 구 를 사용 하여 데이터 가 넘 치 는 것 을 방지 하 는 해결 방법

C\#에 키워드 checked 가 있 습 니 다.현재 컨 텍스트 의 수치 연산 과 수치 변환 이 넘 칠 지 여 부 를 판단 하 는 데 사 용 됩 니 다.상수 가 넘 치면 컴 파일 할 때 발견 할 수 있 습 니 다.변수 가 넘 치면 실행 할 때 Overflow Exception 을 던 집 니 다.수치 연산:+   ―   - (unary)   +   -   *   /이것 만 있 으 면 데이터 가 넘 칠 까 봐 걱정 하지 마 세 요.checked checked 는 두 가지 사용 방법 이 있 습 니 다.1.조작 부호 로 사용

int a = int.MinValue;
int c = checked(a--);
을 실행 할 때 이상 을 던 집 니 다.
image2.큰 코드 를 검사 합 니 다.이렇게 하면 안의 모든 코드 를 검사 합 니 다

checked
{
    int a = int.MinValue;
    int c = a--;
}
.다음 과 같은 그림 입 니 다.
image
unchecked 와 checked 가 대응 하고 unchecked 키 워드 를 사용 하여 검 사 를 취소 합 니 다.두 가지 사용 이기 도 하 다.1.연산 자로 서

int a = int.MinValue;
int c = unchecked(a--);
이렇게 하면 이상 하 게 던 지지 않 는 다.
image
2.큰 코드

unchecked
{
    int a = int.MinValue;
    int c = a--;
}
를 검사 해도 이상 을 던 지지 않 습 니 다.
image/checked 와/checked-코드 에 항상 이렇게 많은 checked 문 구 를 써 야 한다 면 귀 찮 지 않 습 니까?컴 파일 매개 변수 가 있 었 으 면 좋 겠 습 니 다.설정 만 있 으 면 모두 검 사 했 습 니 다.마이크로소프트 도 이것 을 생각 했다.그것 은/checked 인 자 를 제공 하고/checked-를 제공 하여 취소 했다.넘 침 검사/checked,/checked+•넘 침 검사/checked-물론 모든 검 사 를 취소 하 셔 도 됩 니 다.명령 행 인 자 는/checked-

csc t2.cs /checked
이 며 csc 는 컴 파일 러 csc.exe 이 고 t2.cs 는 컴 파일 된 코드 파일 입 니 다.많은 분 들 이 Visual Studio 를 쓰 시 는 것 같 아 요.VS 에서 도 설정 이 가능 합 니 다.절 차 는 다음 과 같 습 니 다.저 는 VS 2010 을 예 로 들 면(VS 2005,2008 차이 가 많 지 않 습 니 다)1.프로젝트 에서 오른쪽 단 추 를 누 르 고 메뉴 Properties 를 선택 하 십시오.
image
2。"Build"를 클릭 하고"Advanced"를 클릭 합 니 다.
image
3。열 린 대화 상자 에서"Check for arithmetic overflow/underflow"를 체크 합 니 다.
image몇 개의 주의 1.checked 문 구 는 현재 컨 텍스트 의 코드 만 유효 합 니 다.즉,호출 된 함수 내 부 를 검사 하지 않 습 니 다.

static void Main(string[] args)
{
    checked
    {
        TestFun();
    }
}
static void TestFun()
{
    int a = int.MinValue;
    int c = a--;
}
이 코드 에서이상 하지 않 습 니 다.checked 키 워드 는 TestFun 내부 에 영향 을 주지 않 기 때 문 입 니 다.이렇게 해 야 한다 면 TestFun 내부 에 checked 키 워드 를 추가 하거나 전역 스위치 를 엽 니 다(컴 파일 파라미터/checked 또는 VS 설정 추가).2.checked,unchecked 키 워드 는 왼쪽 이동 과 오른쪽 이동 이 넘 치 는 지 확인 하지 않 습 니 다.

static void Main(string[] args)
{
    checked
    {
        int a = int.MinValue;
        int c = a>>1;
    }
}
실행 시 이상 을 던 지지 않 습 니 다:
image
3.성능 을 고려 하여 Debug 시 검 사 를 하고 Release 시 검 사 를 하지 않 는 것 을 권장 합 니 다.

좋은 웹페이지 즐겨찾기