質問
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 char
や unsigned char
であります。ほとんどのプラットフォーム signed char
する8ビットの二つの補数から -128
へ 127
, は、 unsigned char
する8ビットの符号なし整数(0
へ 255
).注記の基準を必要としないこと char
種類は8ビットだける sizeof(char)
戻り 1
.きのビット数をcharと CHAR_BIT
に limits.h
.が少ない場合はトおり、現在これ以外のもの 8
, れています。
よくあるご質の概要この問題 こちらの.
どその他上記からに掲載し、いに基づいており、また以下の int8_t
や uint8_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?
- すべてのビットに参加決定にその値は切り替わらないため、パディングビットのオブジェクトです。
- 追加は回のみ
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_t
や uint8_t
種類です。
signed char
って-128 127; unsigned char
は、範囲が0-255です。
char
に相当するいずれかsigned charまたはunsigned charによっては、コンパイラですが、異なるタイプです。
使用している場合は、C-スタイル文字列だけを使用 char
.の使用を希望する場合は、charのための演算(もとても珍しい)を指定し、署名または符号なしに明示的に述します。
char
や unsigned char
なる保証をする8ビットの種類はすべてのプラットフォームであることが保証され8ビットが大きくなります。一部のプラットフォームしてい 9ビット、32ビット、64ビットのバイト.しかし、最も共通のプラットフォーム(Windows、Mac、Linux x86等) 8ビットのバイトです。
の直接値を通常のcharの値が既知であることがわかり CHAR_MIN
や CHAR_MAX
を符号なしcharダブルの範囲を正。例えば、 CHAR_BIT
8の範囲定 char
は保証するには[0,127](できるため、署名または符号なし) unsigned char
が[0,255】 signed char
する[-127,127].
いう意味で用いられています。は、基準を対象にポッド(プレーンの古いデータを直接に変換された配列の符号なしchar。ことができ、検討のための表現とビットパターンのオブジェクトです。同一の保証で安全なタイプpunningは存在しないためのcharまたは署名された文字に置き換わります。
unsigned char
間に正の値です。...のように 0 へ 255
場として
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