質問

C/C++か unsigned char が使われているのでしょうか。どう違うから通常の char?

役に立ちましたか?

解決

C++である 異なる 文字の種類:

  • char
  • signed char
  • unsigned char

ご利用の場合は文字タイプ テキスト, 使用には不適 char:

  • ですので、キャラクターのカチューシャリテラルのように 'a' または '0'.
  • できるCの文字列のように "abcde"

でも作品として数値では指定されるかどうかその価値として扱われ署名または符号なし.注文字の比較を通じて格差がままに自分を制限をASCII(0-127)だけて安心です。

ご利用の場合は文字の種類として 番号, 使用します:

  • signed char, いとの考えから 少なくとも の-127-127の範囲です。(-128 127共通)
  • unsigned char, いとの考えから 少なくとも の0-255の範囲です。

"少なくとも"では、C++の標準でなければならないわけではなく最小限の範囲の値を数値タイプが必要です。 sizeof (char) 要する1つ一byte、byteが理論的にする例えば、32ビット. sizeof いまだ報告のサイズとして 1 -意味する してい sizeof (char) == sizeof (long) == 1.

他のヒント

これは、実装に依存してのCの標準を定義していない、署名したもの char.によってプラットフォームは、charする signed または unsigned, る必要があります明示的に求め signed char または unsigned char 場合は実装に依存します。使おう char を目的とする場合には文字から文字列は、こうプラットフォームにある文字列です。

の違い signed charunsigned char であります。ほとんどのプラットフォーム signed char する8ビットの二つの補数から -128127, は、 unsigned char する8ビットの符号なし整数(0255).注記の基準を必要としないこと char 種類は8ビットだける sizeof(char) 戻り 1.きのビット数をcharと CHAR_BITlimits.h.が少ない場合はトおり、現在これ以外のもの 8, れています。

よくあるご質の概要この問題 こちらの.

どその他上記からに掲載し、いに基づいており、また以下の int8_tuint8_t または小さな整数です。

感じてしまっているためでという、どんな状態ルのCおよびC++(そのこと).第一に、 すべてのビットunsigned char 参加価値を決定する場合は符号なしcharオブジェクトです。第二に、 unsigned char 明に明示的に記載されてunsigned.

現在のディスカッションを行ったという設定に変換する際の値 -1 int型へ unsigned char.彼は拒否うのは当然のことですが、そのような unsigned char は、そのすべてのビットセット1で"と持ちかけられた手話を表現。そんでいます。この直後のこのルールの変換などを対象:

場合、新しいタイプは、符号なしの値に変換される繰り返し追加 を差し引いた一つ以上の最大値を表すことができる新しいタイプ までの価値の範囲は、新しいタイプです。(6.3.1.3p2 は、C99案)

ことになる数理。C++で記述するのmodulo微分積分学、金利と同じです。とにかくう ない 保証はすべてのビットの整数値 -1 一つ前に変換します。では、どういを請求することができる当然のことですが、そのような unsigned char すべてその CHAR_BIT ビットが1?

  1. すべてのビットに参加決定にその値は切り替わらないため、パディングビットのオブジェクトです。
  2. 追加は回のみ UCHAR_MAX+1-1 利益をもたらす価値の範囲、すなわち UCHAR_MAX

ことになるが、実際に!そして、いつでもい unsigned char とそのすべてのビットについ

unsigned char c = (unsigned char)-1;

でもこの変換 ない で切り捨高めます。に恵まれたイベント 二人の補 では前方一致が同じはありませんが真のその他のサイン表現に変換するものである。

として例えば、用途の unsigned char:

unsigned char 使われているコンピュータグラフィックは、非常に多いがい)に優れるシングルバイトの各色成分とするそしてつくられているのかを見るRGB(またはRGBA)色として表される24(32)ビット、それぞれ unsigned char.以降 unsigned char 価値の下落は、範囲[0,255]の値は、通常として解釈される:

  • 0と完全に欠如しているこの色成分とする
  • 255意味100%の色する色素

そうRGB赤として(255,0,0)->(100%赤、0%緑0%。

なぜ使用しないで signed char?算術演算は、ビットの移行が問題を含んでいます。として説明して、 signed char'sの範囲は実質的には移動-128.について簡単にナイーブ(未使用)の方法に変換するRGBレースケールでは平均すべての色成分を、このスポットとして知られた場合の問題の価値を色成分は負になります。赤(255,0,0)の平均値を(85,85,85)利用の場合 unsigned char 演算.しかし、場合の値を示した signed chars(127,-128,-128)まうと(-99,-99,-99)、(29、29日、29日) unsigned char スペースは、間違っています。

を利用する場合は、文字と小さな整数、最も安全について教えてください、 int8_tuint8_t 種類です。

signed char って-128 127; unsigned char は、範囲が0-255です。

char に相当するいずれかsigned charまたはunsigned charによっては、コンパイラですが、異なるタイプです。

使用している場合は、C-スタイル文字列だけを使用 char.の使用を希望する場合は、charのための演算(もとても珍しい)を指定し、署名または符号なしに明示的に述します。

charunsigned char なる保証をする8ビットの種類はすべてのプラットフォームであることが保証され8ビットが大きくなります。一部のプラットフォームしてい 9ビット、32ビット、64ビットのバイト.しかし、最も共通のプラットフォーム(Windows、Mac、Linux x86等) 8ビットのバイトです。

の直接値を通常のcharの値が既知であることがわかり CHAR_MINCHAR_MAX を符号なしcharダブルの範囲を正。例えば、 CHAR_BIT 8の範囲定 char は保証するには[0,127](できるため、署名または符号なし) unsigned char が[0,255】 signed char する[-127,127].

いう意味で用いられています。は、基準を対象にポッド(プレーンの古いデータを直接に変換された配列の符号なしchar。ことができ、検討のための表現とビットパターンのオブジェクトです。同一の保証で安全なタイプpunningは存在しないためのcharまたは署名された文字に置き換わります。

unsigned char 間に正の値です。...のように 0255

場として

signed char データをもとに、正と負の値です。...のように -128+127

符号なしcharするものである符号なしbyte値(0to255).きを考える"char"にとっての"キャラクター"では数値となります。通常の"char"に署名するまでの128価値観、これらの値をマップを使用して文字のASCIIエンコーディングです。がいずれの場合は、保存メモリをバイト値とします。

の場合のようにさまざまな特長とsignedness、あとuint8_t,int8_t,uint16_tなどでまとにしたいと考えています。

符号なしcharのビットの符号の正規charとして別の番号です。この変化は、範囲[0-255]と[-128-127].

一般的に符号なしcharを使用しています。この違いの場合のようなことをシビッツ(シフトにサイン)などを取り扱う場合にはcharとしてbyteではなくそのまま使用すると数字です。

unsigned charの心臓部であるすべてのビットtrickery.ほぼすべてのコンパイラのためのすべてのプ符号なしcharは単にバイトになります。符号なしの整数(普通)8ビット.このとして扱うことができ、小さな整数またはパックのビット.

に依存症としての人と、標準の基準を定義していませんの看板の文字に置き換わります。そして3つの異なる"char"型:char署名されたchar、unsigned char。

一部のgooglingた この, 人々が行われたディスカッションです。

符号なしcharは基本的にはシングルバイトになります。なので、ときに使うことが必要な場合は一つのバイトデータ(例えば、も使い続けることによって設定フラグのon/offを渡してやらなければ機能し、多くのWindows API)

引用frome"のcプログラミングlaugage"の本:

Credit expressとは signed または unsigned に対しても適用できるcharまたは任意の整数値です。符号数 常に正またはゼロ、の法令を遵守算modulo2^nの数 ビットのタイプです。そのため、たとえば、文字数は8ビット符号なしchar変数の値 0-255の範囲が署名した文字数の値をと-128 127(二's 補機です。) るかどうか平野字が署名または符号なし機械に依存するので、 も印刷可能な文字は常に好評です。

unsigned char間の正の値は:0-255の範囲 signed char間の正及び負の値:-128から+127

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top