ファイルまたはプロジェクト設定でユーザーが明示的に言及しない限り、デフォルトのタイプの char を符号なしとして受け取る C コンパイラはありますか?
/関羽_
ファイルまたはプロジェクト設定でユーザーが明示的に言及しない限り、デフォルトのタイプの char を符号なしとして受け取る C コンパイラはありますか?
/関羽_
GCCはそうします。ただし、ARM linux[*] など、unsigned char が慣例であるプラットフォーム用にコンパイルする場合のみ。GCC が x86 用にコンパイルする場合、デフォルトでは char が署名されます。
[*] または、少なくとも過去にはありました。それ以来、LinuxがARM上の別のデフォルトABIに切り替えたことを私は知っています。
'2013 を更新: Android NDK の ARM コンパイラ (gcc、clang) のデフォルトはunsigned char
. x86 および MIPS コンパイラのデフォルトはsigned char
です。
標準では、標準で必要なすべての文字(AZ、az、0-9、基本句読点など)の整数値が正である必要があるため、これらの文字の値が範囲外であるエンコーディングを使用するシステムでsigned char
は、プレーンchar
は署名されていません。これは、すべてのEBCDICシステムchar
に署名されていないプレーンが必要であることを意味すると思いますが、私は間違っている可能性があります。
通常、デフォルトとして設定するオプションがありますが、私の知る限り、それを行うコンパイラはありません。