티스토리 뷰
반응형
1. 일반 규정
1.6 캐스트
규정
- 캐스트를 사용하는 코드에서 가능한 값의 범위에 걸쳐 적절한 동작을 보장하는 방법을 설명하는 주석을 달아야 합니다.
예시
int
abs (int arg)
{
return ((arg < 0) ? -arg : arg);
}
...
uint16_t sample = adc_read(ADC_CHANNEL_1);
result = abs((int) sample); // WARNING: 32-bit int assumed.
이유
캐스트는 위험합니다. 위의 예제에서 부호없는 16비트 "sample" 변수는 부호가 있는 16비트 정수보다 큰 양의 값을 가질 수 있습니다. 이 경우 절대값도 부정확하게 됩니다. 따라서 int 형이 ISO C 표준에서의 16비트라면 오버플로우가 발생할 수 있습니다.
시행
이 규정은 코드 검토시 시행되어야 합니다.
'Digital Developer' 카테고리의 다른 글
[ECCS] 자주 사용하는 키워드 (0) | 2020.10.01 |
---|---|
[ECCS] 피해야할 키워드 (0) | 2020.10.01 |
[ECCS] 괄호 (0) | 2020.10.01 |
[ECCS] 중괄호 (0) | 2020.09.30 |
[ECCS] 코드 길이 (0) | 2020.09.30 |
댓글