関数がビットパターン00100010を返さなければならないとしましょう。unsigned charにはどのような値を割り当てることができますか?
右から5番目のビットでこのパターンを返したいとします。
これは有効ですか?
機能は00100010.
unsigned char mask = 20;
return mask | settings;
を表すか、unsigned char
に値20
を割り当てることができないパラメータsettings
にかかりますか?
関数がビットパターン00100010を返さなければならないとしましょう。unsigned charにはどのような値を割り当てることができますか?
右から5番目のビットでこのパターンを返したいとします。
これは有効ですか?
機能は00100010.
unsigned char mask = 20;
return mask | settings;
を表すか、unsigned char
に値20
を割り当てることができないパラメータsettings
にかかりますか?
私はrspの答えがちょっと混乱していることがわかりました。だから私はこれをクリアしてみましょう。
'a'
のような文字は、文字テーブルによる整数の解釈に過ぎません。たとえば、この文はasciiテーブル'a' == 97
に従って真です。
(un)signed char
には自由に整数を書くことができます。 これは本質的に同じです。
あなたがprintf("%c\n",var)
を使用している場合int
引数はunsigned char
に変換され、そして得られた文字が書かれているあなたはvar = 'a'
またはvar = 97
編集をした場合、それは問題ではないが:chuxに標準THXの説明を使用
[ISO 8859-1](https://en.wikipedia.org/wiki/ISO/IEC_8859-1)が良い例になります。 ASCIIは、限られた特定の領域でのみ使用されます。 –
"varの数値がcharとして再解釈されます" - > C仕様では "... intの引数がunsigned char'に変換され、結果の文字が書き込まれます。 – chux
unsigned char
は、少なくとも8ビットを有することを保証するので、バイナリ100000を表す値は、型の範囲内であるが、それはヘクスに書き込まなければならないれる。
unsigned char mask = 0x20;
return mask | settings;
または単に:もしsettings
二進値00100010(0x22
)として、それは既に第5ビットが設定されていること
return 0x20 | settings;
注意。
unsigned char
にはどのような値を割り当てることができますか?
最小値はunsigned char
として0であるいくつかの符号なし整数タイプです。
最大値を<limits.h>
が提供される:UCHAR_MAX
UCHAR_MAX
少なくとも255であり、いくつかのパワーの2 - それは非常に一般的に255
1 255のような、511、65535、等場合この範囲外の整数値はunsigned char
に割り当てられ、範囲内になるまでUCHAR_MAX + 1
を加算/減算することで値が減少します。
次のコードはOKですが、20が必要なマスクであるか0x20であるかは不明です。バイナリパターン0010_0010 又は22 あること
unsigned char mask = 20; // bits 0001 0100
// or
unsigned char mask = 0x20;// bits 0010 0000
注意。
'unsigned char'は、sizeofが1バイトの整数です。 1バイトが8ビットであると仮定すると、0〜255の値を割り当てることができます。 – DeiDei
'unsigned char'は少なくとも8ビットを持つことが保証されています。 'unsigned char mask = 0x20;' – chqrlie
C言語や他の言語では、 "char"という文字列を読み込んでテキストを格納してはいけません。他のものでは、「char」はテキストである必要があります。 –