2

char の比較if(c>='a' && c<='z')は移植性がないという人もいました。

int main() {
    char c;
    scanf("%c", &c);
    if(c>='a' && c<='z')
        printf("lower case\n");
}

if(c>='a' && c<='z')char 比較が移植可能でないという証拠はありますか?

4

2 に答える 2

10

C 標準では、実行文字セット'a'との間で小文字のみが使用されることは保証されていません。'z'

EBCDIC エンコーディングでは、 と の間に他の文字が'a'あり'z'、一部の C 実装では EBCDIC が使用されます。

C 標準では、数字が連続していることを保証しているため、 が 10 進数字'0' <= d && d <= '9'かどうかをテストします。d

于 2013-05-06T13:42:11.710 に答える