ページ 11

putchar について

Posted: 2012年7月19日(木) 17:59
by taz
こんにちは。putcharについて質問があります。

基本情報試験の問題で、以下のようなコードがあります。

putchar('0' + (x * 10/y));

上のコードで'0'を足している意味がわかりません。'0' を足さない場合は、例えばx=3、y=8の時、計算結果が変です。数字ではありません。
また、putchar に渡す引数は、int型のはずですが、'0' は、int 型なのでしょうか?

また、putchar('0' + (x/y * 10)); ですが、例えばx=3、y=8の時、出力結果が0です。少数の足し算で暗黙の型変換されるからでしょうか?それにしても、結果が0になる理由がわかりません。

どなたかアドバイスよろしくお願いします。

Re: putchar について

Posted: 2012年7月19日(木) 18:20
by ミーン
>>int型のはずですが、'0' は、int 型なのでしょうか?
そのとおりです。'0'は48と等価です。

Re: putchar について

Posted: 2012年7月19日(木) 18:24
by h2so5
整数同士の除算では小数点以下を切り捨てるので

3 / 8 * 10 = 0 * 10 = 0

Re: putchar について

Posted: 2012年7月19日(木) 20:24
by taz
int型にするために、'0'を足しているんですね。

アドバイスありがとうございました。

Re: putchar について

Posted: 2012年7月19日(木) 20:29
by softya(ソフト屋)
taz さんが書きました:int型にするために、'0'を足しているんですね。

アドバイスありがとうございました。
勘違いされている気が・・・。
値を数字の文字コードにするために'0'を足しています。
ぜひデバッガで確認を。

ちなみにputchar('0'+1);とすれば1が表示されます。

「putc、putwc、putchar、putwchar (CRT)」
http://msdn.microsoft.com/ja-jp/library ... s.71).aspx