char に渡したいさまざまなデータ型がたくさんありますが、int を渡すための通常の形式を実行すると、次のようになります。
char number=(char)one;
整数に対してのみ機能します。他のデータ型を使用すると、文字列表現が必要なときに数値が得られます。これを行う最も簡単な方法は何ですか? PSこの方法でキャストしようとすると、ポインターのサイズにも問題があるため、回答を完全に説明してください。C構文のみお願いします ありがとう
データ型の文字列表現を探しているなら、必要なのはsprintf関数だと思います。たとえば、floatタイプの場合、次のようにします。
float example = 3.6;
char temp[64]; // Allocate a string of size 64.
sprintf(temp, "%f", example);
example
これにより、の文字列表現が一時的に保存されます。
Achar
は整数型です。つまり、整数(未満256
)との間で変換できます。
他のデータ型では、文字列表現が必要なときに数値値が得られます。
技術的には、文字列はではありませんchar
。これはchar
配列であるため、最終的にはポインタに減衰します。
タイプごとに、独自のtoString()
種類の関数を作成し、それに応じてフォーマットされた文字列を返す必要があります。
最も簡単な方法:使用sprintf()
概念を正しく理解するために、この 1 行を 1 語ずつ見ていきましょう。
char number=(char)one;
最初char
は宣言です。これは、 type の変数を作成していることを意味しますchar
。 char
1 バイト (8 ビット) のデータ型で、通常は 1 文字を保持するために使用されますが、基本的にはバイトです。そのため、0x00 (別名 0) から 0xFF (別名 255) までの値を保持できます。
number
タイプの変数の名前ですchar
=
代入演算子です。の値を設定しますnumber
(char)
は、「私の後にある変数の型が何であれ、それを として解釈するchar
」ことを意味します。これを「へのキャスト」と呼びchar
ます。(「charに渡す」ではありません)。
あなたのコードからは、何が何であるかわかりませんone
。char
しかし、それが aまたは 0 から 255 までの整数以外の場合、代入は意味がありません。
要約するとnumber
、これは 1 バイトの値を保持する単なる char であり、それに別のものを割り当てると、おそらく望ましくない結果が得られるということです。
おそらくあなたはこのようなものを求めています:
char number = '0' + one;
これは1 = [0、9]で機能します