9
伝統的に、signed char
をctype.h
という述語に渡すエラーは-1から255までしか定義されていなかったため、-128から-2までは配列境界外の読み込みに終わることがありました。ctype.hにはまだunsigned charが必要ですか?
現代版のCでは未定義の動作を避けるため、この問題は修正されましたか、厳密にはunsigned char
を使用する必要がありますか?
伝統的に、signed char
をctype.h
という述語に渡すエラーは-1から255までしか定義されていなかったため、-128から-2までは配列境界外の読み込みに終わることがありました。ctype.hにはまだunsigned charが必要ですか?
現代版のCでは未定義の動作を避けるため、この問題は修正されましたか、厳密にはunsigned char
を使用する必要がありますか?
厳密に言えば、現代版のCでは未定義の動作を避けるためにunsigned charを使用する必要がありますか?
はい、取り扱いC11 draft standard部7.4
キャラクタから<のctype.h>段落言う(強調鉱山):
ヘッダは、分類とマッピングのために有用ないくつかの機能を宣言する 文字。 198)すべての場合において、引数はintであり、その値はは で、符号なしcharとして表現可能であるか、マクロEOFの値と等しくなければならない。 引数にの値がある場合、その動作は定義されていません。
draft C99 standardについても同様ですが、同じセクションで見つけることができます。
最近のプログラムでは、128-255の範囲の文字に直面する可能性が高くなります。これは、符号付き文字として見れば否定的に解釈されるため、答えは「これまで以上」です。 –