반응형
이 C 코드에서 알파벳이 여러 범위로 분리되는 이유는 무엇입니까?
사용자 정의 라이브러리에서 구현을 보았습니다.
inline int is_upper_alpha(char chValue)
{
if (((chValue >= 'A') && (chValue <= 'I')) ||
((chValue >= 'J') && (chValue <= 'R')) ||
((chValue >= 'S') && (chValue <= 'Z')))
return 1;
return 0;
}
인가요 부활절 달걀 또는 표준 C / C ++ 방법 대 장점은 무엇입니까?
inline int is_upper_alpha(char chValue)
{
return ((chValue >= 'A') && (chValue <= 'Z'));
}
이 코드의 저자는 아마도 문자의 숫자 값이 연속적이지 않은 지점에서 EBCDIC 를 지원 해야했을 것입니다 (추측 할 수 있듯이 I
, J
와 R
, 사이에 간격이 S
있습니다).
C 및 C ++ 표준 은 이러한 이유로 정확하게 문자 가 인접한 숫자 값 0
을 9
갖도록 보장 하므로 이러한 방법 중 어느 것도 엄격하게 표준을 준수하지 않습니다.
EBCDIC과 ASCII를 모두 다루려고하는 것 같습니다. 대체 방법이 EBCDIC에서 작동하지 않습니다 (오탐 (false positive)는 있지만 오탐 (false negative) 없음)
C와 C ++ 할 것을 요구 '0'-'9'
연속이다.
표준 라이브러리 호출 은 ASCII, EBCDIC 또는 기타 시스템에서 실행되는지 여부를 알고 있으므로 이식성이 뛰어나고 더 효율적입니다.
반응형
'IT박스' 카테고리의 다른 글
디자인 패턴 : 팩토리 vs 팩토리 메소드 vs 추상 팩토리 (0) | 2020.06.02 |
---|---|
'fs : 기본 모듈 소스 재평가는 지원되지 않습니다'를 수정하는 방법-graceful-fs (0) | 2020.06.02 |
.NET의 'CLSCompliant'속성은 무엇입니까? (0) | 2020.06.02 |
NSInvalidUnarchiveOperationException : NSLayoutConstraint라는 클래스를 인스턴스화 할 수 없습니다. (0) | 2020.06.01 |
Ubuntu에서 PhantomJS를 어떻게 설정하고 실행할 수 있습니까? (0) | 2020.06.01 |