2017-02-09 21 views
-1

多少奇妙なことに、Cはchar型ではなく、文字定数をint型として扱います。例えば、32ビットのintを有するASCIIシステムと8ビットの文字コードデータ型の格納char

char grade = 'B'; 

に32ビット単位で格納されている数値66として'B'を表すが、等級は66で巻き取ります8ビット単位で格納される。 この行について説明してください。

+3

これは、Cがどのように動作するかです。文字定数は、C言語ではint型です。 –

+0

必ずしも8ビット単位である必要はありません。他の幅にすることもできるし、歌うこともでき、すべての実装を定義することができます。 – user3528438

+1

@ user3528438; OPは "8ビット単位"ではなく "8ビット単位"と言っており、 'int'は32ビット、' char'は8ビット、システムはASCIIを使用するという*仮定*を明示しています。 –

答えて

1

gradecharであり、式intの式で初期化されています。これは完全に正当なものであり、intの値は暗黙的にタイプcharに変換されます。任意の算術型の値は、他の算術型に暗黙的に変換できます。

このような暗黙的な変換は、時間の99%、文字定数がタイプintであることが問題ではないという理由です。そのような定数は文脈に応じて適宜変換される。

は(C++文字定数でタイプcharであることに注意してください。CおよびC++は、2つの異なる言語であることを忘れないでください。)

+1

@PSkocik:編集をありがとう。私は何を意味しているのか分かっていた、それは私の指が私のためにタイプしたものに対応していなかった。 –

関連する問題