主な違い: Signed charとunsigned charは、Cプログラミングで使用される2つのデータ型です。 unsigned charとsigned charはどちらも文字を格納するために使用され、8ビットの領域で構成されています。 符号なし文字は0から255までの値を持ちますが、符号付き文字は–128から127までの値を持ちます(8ビットバイトと2の補数演算を持つマシン上)。
C90はCがcharでsignedとunsignedのキーワードを使うことを可能にしました。 小さい整数値が扱われるときだけそれらが使用されることに注意することは重要です。 Signed charとunsigned charは、どちらも16ビットマシンの8ビットバイトです。 それらは主にそれらによって表される範囲が異なります。 unsigned charの範囲は0から255ですが、charまたはsigned charのサイズは-128から127です。
charからint値への変換は、Cによって自動的に行われます。しかし、それはやはり結果が否定的かどうかを判断するマシンに依存します。 大文字のAは、65の整数値に相当します。
unsignedとsignedがcharとともに使用されているということは、これらの8ビットの内容が整数に変換されると、これらの用語によって何らかの違いが生じる可能性があることを意味します。 文字データ型は通常、デフォルトで符号なし型です。 ただし、C ++およびANSI Cモードでは、それらを符号付きまたは符号なしのcharとして明示的に宣言するオプションがあります。 符号なしcharでは8ビットがデータビットとして使用されますが、符号付きcharのメモリ表現では1ビット(最上位ビット)が符号付きビットに使用され、7ビットがデータビットとして使用されます。 符号付きビットが0の場合は、数値が正数であることを意味します。 符号付きビットが1の場合、数値は負です。
符号付き文字と符号なし文字の比較
署名されたChar | 符号なしChar | |
範囲 | -128〜+ 127 | 0から255 |
典型的なビット幅 | 1バイト | 1バイト |
例(x = 10000010) | 符号付き文字x = -2 | 符号なしchar = 82 |
表現 | 1ビット=符号付きビット 7ビット=データビット | 8ビット=データビット |
宣言 | 符号付き文字b | 符号なしchar |