본문 바로가기
소프트웨어 개발(SW Dev)/Rule(CERT C)

CERT C - INT 규칙 목록

by flowhistory 2024. 11. 9.

INT : Integers (INT) - 정수

 

정수형 데이터 형 변환에 관련된 내용을 다루는 카테고리입니다. 
부호 있는 정수형과 부호 없는 정수형 간의 형 변환에 대한 안전한 방법에 대한 규칙이 포함되어 있습니다.

 

Rule Number Rule Definition 설명
INT01-C 객체의 크기를 나타내는 모든 정수 값에는 rsize_t 또는 size_t를 사용하세요. size_t 유형은 sizeof 연산자 결과의 부호 없는 정수 유형입니다.
size_t 유형의 변수는 객체의 크기를 나타내는 데 충분한 정밀도가 보장됩니다. size_t의 한계는 SIZE_MAX 매크로에 의해 지정됩니다.
INT02-C 정수 변환 규칙을 이해합니다. 변환은 캐스트(cast)의 결과로 명시적으로 발생하거나 작업에서 요구하는 대로 암시적으로 발생할 수 있습니다.
일반적으로 프로그램을 올바르게 실행하려면 변환이 필요하지만 이로 인해 데이터가 손실되거나 잘못 해석될 수도 있습니다.
피연산자 값을 호환 가능한 유형으로 변환해도 값이나 표현이 변경되지 않습니다.
INT05-C 가능한 모든 입력을 처리할 수 없는 경우 입력 함수를 사용하여 문자 데이터를 변환하지 마십시오. 함수가 가능한 모든 입력을 처리할 수 없는 경우 문자를 입력하고 이를 정수로 변환하는 함수를 사용하지 마십시오.
예를 들어, scanf(), fscanf(), vscanf() vfscanf()와 같은 형식화된 입력 함수를 사용하여 stdin 또는(fscanf() vfscanf()의 경우) 다른 입력 스트림에서 문자열 데이터를 읽을 수 있습니다. .
이러한 함수는 유효한 정수 값에 대해서는 잘 작동하지만 유효하지 않은 값에 대한 강력한 오류 처리 기능은 부족합니다.
INT07-C 숫자 값에는 명시적으로 signedunsigned char 유형만 사용하세요. char, signed char, unsigned char 세 가지 유형을 집합적으로 문자 유형이라고 합니다.
컴파일러는 char signed char 또는 unsigned char와 동일한 범위, 표현 및 동작을 가지도록 정의할 권한이 있습니다.
선택에 관계없이 char은 다른 두 유형과 별개의 유형이며 어느 것과도 호환되지 않습니다.
INT14-C 부호 없는 피연산자에만 비트 연산자를 사용하세요. signed 정수에 대한 비트 연산의 결과는 구현에 따라 정의되므로 비트 연산자는 unsigned 정수 피연산자에만 사용해야 합니다.
INT15-C 프로그래머가 정의한 정수 유형의 형식화된 IO에는 intmax_t 또는 uintmax_t를 사용하십시오. 형식화된 I/O 및 유형 정의와 관련된 문제를 고려하는 프로그래머는 거의 없습니다.
프로그래머가 정의한 정수 유형은 구현에서 지원하는 모든 유형일 수 있으며 unsigned long long보다 큰 유형일 수도 있습니다.
INT30-C unsigned 정수 연산이 래핑(wrap)되지 않는지 확인하세요. unsigned 피연산자를 포함하는 계산은 절대로 오버플로될 수 없습니다.
결과로 나타나는 부호 없는 정수 유형으로 표시할 수 없는 결과는 결과 유형으로 표시할 수 있는 가장 큰 값보다 1 큰 숫자만큼 모듈로 감소되기 때문입니다.
INT31-C 정수 변환으로 인해 데이터가 손실되거나 잘못 해석되지 않는지 확인하십시오. 암시적 및 명시적(캐스트 사용) 정수 변환은 데이터가 손실되거나 잘못 해석되지 않도록 보장되어야 합니다.
INT32-C signed 정수에 대한 작업으로 인해 오버플로가 발생하지 않는지 확인하세요. signed 정수 오버플로는 정의되지 않은 동작입니다.
결과적으로 구현 시 부호 있는 정수 오버플로를 처리하는 방법에 있어 상당한 자유도가 있습니다.
예를 들어 signed 정수 유형을 모듈로로 정의하는 구현에서는 정수 오버플로를 감지할 필요가 없습니다.
구현에서는 부호 있는 산술 오버플로를 포착하거나 단순히 오버플로가 절대 발생하지 않을 것이라고 가정하고 이에 따라 개체 코드를 생성할 수도 있습니다.

 

728x90

'소프트웨어 개발(SW Dev) > Rule(CERT C)' 카테고리의 다른 글

CERT C - ARR 규칙 목록  (0) 2024.11.11
CERT C - FLT 규칙 목록  (1) 2024.11.10
CERT C - EXP 규칙 목록  (0) 2024.11.08
CERT C - DCL 규칙 목록  (0) 2024.11.07
CERT C - PRE 규칙 목록  (0) 2024.10.24

댓글