こんにちは。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になる理由がわかりません。
どなたかアドバイスよろしくお願いします。
putchar について
Re: putchar について
>>int型のはずですが、'0' は、int 型なのでしょうか?
そのとおりです。'0'は48と等価です。
そのとおりです。'0'は48と等価です。
I've been deleted because of nothing.
Re: putchar について
整数同士の除算では小数点以下を切り捨てるので
3 / 8 * 10 = 0 * 10 = 0
3 / 8 * 10 = 0 * 10 = 0
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: putchar について
勘違いされている気が・・・。taz さんが書きました:int型にするために、'0'を足しているんですね。
アドバイスありがとうございました。
値を数字の文字コードにするために'0'を足しています。
ぜひデバッガで確認を。
ちなみにputchar('0'+1);とすれば1が表示されます。
「putc、putwc、putchar、putwchar (CRT)」
http://msdn.microsoft.com/ja-jp/library ... s.71).aspx
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。