符号なしのchar。 C - c

では、unsigned charはどこで役に立つのでしょうか? 私が正しく理解していれば、符号なしのcharは-128から127までの数値を表すことができます。しかし、すべての符号化テーブルは正の数を使用します。したがって、unsigned charは文字を表すために使用できません。

回答:

回答№1は1

いいえ、unsigned charは0〜255です。

バイナリデータ(1バイト)を表現するのに便利ですが、任意のプリミティブデータ型と同様、可能性は無限です。


回答№2の場合は1

まず、あなたが表現しているのは、 signed char, unsigned char 0〜255の範囲です。

負の値のキャラクタについての質問に答えるには、正の値を使用してキャラクタのエンコーディングが行われるのが正しいでしょう。

別の見方では、 signed そして unsigned char 整数表現として。


回答№3の場合は0

Unsigned charはバイトを表すために使用されます。変数に1バイトのメモリしか必要ない場合は、unsigned charを使用して整数を代入します。

例えば、uint8_tはバイトを表現するために使用されますが、それ以上ではありません。


回答№4の場合は0

A 署名された charは-128〜+ 127の数値を表すことができます
unsigned charは0〜255です。

多くのユースケースでは、無署名の方が便利ですが、
何事もバイナリ関連は署名付きでも可能です:
0 = 0,1 = 1 ... 127 = 127、-128 = 128、-127 = 129、-126 = 130 ... -1 = 255
このような変換は自動的に行われます(または、言い換えれば、
それはちょうど異なる解釈です)。

(「バイナリ関連」とは、数学的な-2 * 2も符号なしで可能であることを意味し、
しかし、あまり意味がない)


回答№5の場合は0

について では、unsigned charはどこで役に立つのでしょうか?

おそらく?:( ASCII桁をテストするための非常に簡単な例)

BOOL isDigit(unsigned char c)
{
if((c >= "0") &&(c <= "9")) return TRUE;
return FALSE;
}

引数型のおかげで unsigned char 入力は単一のASCII文字になります(128個のコードがあります ASCII 可能性 拡張ASCII255の可能性がある)。 したがって、この関数では、特定の条件(この場合は数字)に対して入力値をテストするだけです。関数が負の数をテストする必要はありません。レギュラー char (つまり署名された)すべてのASCII文字の範囲を含むことはできません。サイズ unsigned char また、4バイト(通常はそうではないが)に対して1バイトだけであるという点で重要である int