티스토리 뷰

Digital Developer

[ECCS] 캐스트

Escaper 2020. 10. 1. 10:09
반응형

1. 일반 규정

1.6 캐스트

규정

  1. 캐스트를 사용하는 코드에서 가능한 값의 범위에 걸쳐 적절한 동작을 보장하는 방법을 설명하는 주석을 달아야 합니다.

예시

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
댓글
최근에 올라온 글
Total
Today
Yesterday