- 373 名前:デフォルトの名無しさん [2018/03/27(火) 08:39:25.07 ID:tnecWY6M.net]
- >>341 >>346
不都合と言う程の不都合か分からないけど、 単なる char が signed char のコンパイラで、例えば str[i] == -1 の時、 printf("%02X ", (unsigned char)str[i]); なら表示は "FF " printf("%02X ", str[i]); だと表示は "FFFFFFFF " (intが32bitの環境) てな具合に表示結果が指定桁数とずれて見苦しい、という現象が起きる。 ただし void DumpCode(const char* str) でASCII文字列しか扱わないなら、 意図せずASCII以外(漢字など)を含んだ文字列を引数に与えたときに 「見苦しい表示結果」のおかげで関数の使い方の間違いに気付きやすい。 よって (unsigined char) のキャストをしない方が好ましい、て考え方もある。 >>360 ARM で GCC だと、単なる char は unsigined が普通みたい。 元のCPU設計で符号付8bitが拡張機能だったことと関係あるとかないとか。
|

|