IT박스

이 C 코드에서 알파벳이 여러 범위로 분리되는 이유는 무엇입니까?

itboxs 2020. 6. 2. 19:00
반응형

이 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, JR, 사이에 간격이 S있습니다).

C 및 C ++ 표준 은 이러한 이유로 정확하게 문자 가 인접한 숫자 값 09갖도록 보장 하므로 이러한 방법 중 어느 것도 엄격하게 표준을 준수하지 않습니다.


EBCDIC과 ASCII를 모두 다루려고하는 것 같습니다. 대체 방법이 EBCDIC에서 작동하지 않습니다 (오탐 (false positive)는 있지만 오탐 (false negative) 없음)

C와 C ++ 것을 요구 '0'-'9'연속이다.

표준 라이브러리 호출 ASCII, EBCDIC 또는 기타 시스템에서 실행되는지 여부를 알고 있으므로 이식성이 뛰어나고 더 효율적입니다.

참고 URL : https://stackoverflow.com/questions/30049962/why-is-the-alphabet-split-into-multiple-ranges-in-this-c-code

반응형