checked 문 구 를 사용 하여 데이터 가 넘 치 는 것 을 방지 하 는 해결 방법
int a = int.MinValue;
int c = checked(a--);
을 실행 할 때 이상 을 던 집 니 다.2.큰 코드 를 검사 합 니 다.이렇게 하면 안의 모든 코드 를 검사 합 니 다
checked
{
int a = int.MinValue;
int c = a--;
}
.다음 과 같은 그림 입 니 다.unchecked 와 checked 가 대응 하고 unchecked 키 워드 를 사용 하여 검 사 를 취소 합 니 다.두 가지 사용 이기 도 하 다.1.연산 자로 서
int a = int.MinValue;
int c = unchecked(a--);
이렇게 하면 이상 하 게 던 지지 않 는 다.2.큰 코드
unchecked
{
int a = int.MinValue;
int c = a--;
}
를 검사 해도 이상 을 던 지지 않 습 니 다./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 를 선택 하 십시오.2。"Build"를 클릭 하고"Advanced"를 클릭 합 니 다.
3。열 린 대화 상자 에서"Check for arithmetic overflow/underflow"를 체크 합 니 다.
몇 개의 주의 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;
}
}
실행 시 이상 을 던 지지 않 습 니 다:3.성능 을 고려 하여 Debug 시 검 사 를 하고 Release 시 검 사 를 하지 않 는 것 을 권장 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
어떻게 sql 주입 을 효과적으로 방지 하 는 방법SQL 주입 공격 은 해커 가 데이터 베 이 스 를 공격 하 는 데 자주 사용 되 는 수단 중 하나 로 B/S 모델 응용 개발 이 발전 함 에 따라 이런 모델 로 응용 프로그램 을 작성 하 는 프로그래머 도 점점 많...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.