1. ホーム
  2. c++

[解決済み] このC言語のコードでは、なぜアルファベットが複数の範囲に分割されているのですか?

2022-04-25 16:15:55

質問

カスタムライブラリで、ある実装を見ました。

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++の標準規格では、文字 0 から 9 が連続した数値であるのは、まさにこのためであり、どちらの方法も厳密には標準に準拠したものではない。