Etsushi Kato
ekato****@ees*****
2005年 3月 22日 (火) 17:07:28 JST
On 2005/03/22, at 2:22, Masanari Yamamoto wrote: > isdigitなどctype.hのマクロの引数は-1〜255でなければならないそうです > (man isdigit)。この引数の型がcharの場合、-128〜127の値になるので、誤動 > 作を起こすことがあります。 > > isalnum, isalpha, isascii, isblank, iscntrl, isdigit, isgraph, > islower, isprint, ispunct, isspace, isupper, isxdigit > これらのマクロを使う場合は > isdigit((unsigned char)c) > のようにunsigned charにキャストする必要がありそうです。 確かにいくつかの環境で試してみたところ、Linux, FreeBSD 4.10, OpenBSD 3.4, Mac OS X ではキャストしなくても問題ありませんが、NetBSD 1.6.1 と Solaris 9 で は誤作動をおこしました。 -- Etsushi Kato ekato****@ees*****