6

ファイルまたはプロジェクト設定でユーザーが明示的に言及しない限り、デフォルトのタイプの char を符号なしとして受け取る C コンパイラはありますか?

/関羽_

4

3 に答える 3

13

GCCはそうします。ただし、ARM linux[*] など、unsigned char が慣例であるプラットフォーム用にコンパイルする場合のみ。GCC が x86 用にコンパイルする場合、デフォルトでは char が署名されます。

[*] または、少なくとも過去にはありました。それ以来、LinuxがARM上の別のデフォルトABIに切り替えたことを私は知っています。

'2013 を更新: Android NDK の ARM コンパイラ (gcc、clang) のデフォルトはunsigned char. x86 および MIPS コンパイラのデフォルトはsigned charです。

于 2010-09-16T15:28:52.247 に答える
4

標準では、標準で必要なすべての文字(AZ、az、0-9、基本句読点など)の整数値が正である必要があるため、これらの文字の値が範囲外であるエンコーディングを使用するシステムでsigned char 、プレーンcharは署名されていません。これは、すべてのEBCDICシステムcharに署名されていないプレーンが必要であることを意味すると思いますが、私は間違っている可能性があります。

于 2010-09-16T17:55:17.250 に答える
2

通常、デフォルトとして設定するオプションがありますが、私の知る限り、それを行うコンパイラはありません。

于 2010-09-16T15:16:19.707 に答える