putchar について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
taz
記事: 35
登録日時: 13年前
住所: 兵庫

putchar について

#1

投稿記事 by taz » 13年前

こんにちは。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になる理由がわかりません。

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

ミーン
記事: 8
登録日時: 13年前

Re: putchar について

#2

投稿記事 by ミーン » 13年前

>>int型のはずですが、'0' は、int 型なのでしょうか?
そのとおりです。'0'は48と等価です。
I've been deleted because of nothing.

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前
住所: 東京
連絡を取る:

Re: putchar について

#3

投稿記事 by h2so5 » 13年前

整数同士の除算では小数点以下を切り捨てるので

3 / 8 * 10 = 0 * 10 = 0

taz
記事: 35
登録日時: 13年前
住所: 兵庫

Re: putchar について

#4

投稿記事 by taz » 13年前

int型にするために、'0'を足しているんですね。

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: putchar について

#5

投稿記事 by softya(ソフト屋) » 13年前

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(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る