isalpha() が言うところの数字

目的

<ctype.h> の関数 isalpha() が判定するアルファベットに演算子が含まれるのか気になったので調べてみた.
つまり,

  1. [^0-9] をアルファベットとして扱っている
  2. [^a-zA-Z] を数字として扱っている

のどちらかを確かめたく.

 

ソースコード

#include <stdio.h>
#include <ctype.h>

int main()
{
    int i;

    char op[5] = { '+', '-', '*', '/', '%' };

    for( i = 0; i < 5; ++i )
        if( isalpha(op[i]) ) printf("%c is alphabet.\n", op[i]);
        else printf("%c is NOT alphabet.\n", op[i]);

    return 0;
}

 

出力

+ is NOT alphabet.
- is NOT alphabet.
* is NOT alphabet.
/ is NOT alphabet.
% is NOT alphabet.

 

結論

2. [^a-zA-Z] を数字として扱っている

が正解の模様.
どちらが便利かは判らないけれど,この記事を書いているときは 1. だったら便利だった.