2017-02-16 28 views
-1

私は一度も尋ねなかった。そして、私はそれが何をしたのか分からないのですか?例えばprintfの内部での作業方法は?

1.コード

char a = 'h'; 
printf("%i", (int)a); /// Conversion 'a' to int, and again conversion to int by modifier %i. Right? 

私はそう書かれる場合 - あなたは言うだろう:それは間違っています!

2.コード

printf("%i", a); 

、それは間違っているのはなぜ?修飾子%iで 'a'をint型に変換して出力します。

1と2のコードの違いは何ですか?

P.Sなぜ私は 'Cout'アナログを通してC++のように簡単に出力できないのですか? printf()は可変引数関数であり、その引数のために、デフォルトの引数のプロモーションルールが適用され、aはとにかく、intに昇格されますので、

+1

「私は自分自身に尋ねた」...何ですか? –

+0

@SouravGhosh in the title =) – MaximPro

+0

'%i'は「変換」ではありません。これは出力書式指定子であり、 'printf()'に特定の型の値(この場合は 'int')を取得し、それを値のテキスト表現を表す文字に変換する方法を指示します(この場合は小数点以下を指定します) 。 – unwind

答えて

2

printf("%i", a); 

ようなコードは、正しいです。

printf("%i", (int)a); 

ようなコードも正しいが、キャストが全く不要です。

+0

私は浮動小数点にintを置き換えてもよろしいですか? 'printf("%f "、(float)a);' printf( "%f"、a); '違いは? – MaximPro

+1

@ MaximPro実際に知りたいことは何ですか?今ではXY問題になっているようです... –

+0

printfが私のためにすべてを行うならば、変数を目的の型に変換するのは意味がありますか? – MaximPro

関連する問題