ここから本文です

C言語。 doubleにはfとlfのどちらを使うんですか? 教科書にlfと書いてありながら...

cra********さん

2012/1/2519:24:25

C言語。
doubleにはfとlfのどちらを使うんですか?
教科書にlfと書いてありながら、プログラム例の中ではfとlfどちらも使ってありました。

補足そうです、教科書にはprintfでf、scanfでlfが使われてました!

閲覧数:
104,824
回答数:
4

違反報告

ベストアンサーに選ばれた回答

hir********さん

編集あり2012/1/2520:49:40

printf系関数でdouble型を表示する場合は %f
例:
double pi = 3.14;
printf("pi = %f\n", pi);

scanf系関数でdouble型変数への入力を求める場合は %lf
例:
double fx;
scanf("%lf", &fx);

http://www.kijineko.co.jp/tech/superstitions/printf-format-for-doub...
http://www.mm2d.net/c/c-01.shtml

なぜ統一しないんだ!? って誰しも思うんですが
この辺はC言語での float型の扱いを知れば解決すると思います・・

教科書に %lf と書いてあった、とありますが、それは printf関数でですか?
scanf関数でですか?

【補足】
その教科書は正しいですね。
ちなみに、誤解している人があまりに多いために
C99という最新の規格では、printf系関数で %lf という書き方をしても良くなりました。
(動作は %f と同じです)
C99に対応していない処理系では printf系関数内で %lf と書かれた場合の挙動は未定義です。

この質問は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

ecl********さん

2012/1/2613:43:33

プロトタイプの無い関数または可変引数関数への呼び出し時にfloatはdoubleにするという規則があります。
上の一行はprintfに限りません、自作の関数でもそうです。

ですからprintfに渡った時点ではfloatのデータはありえません。なので%f一個でdoubleの表示しても十分なのです。

scanfはfloatのポインタまたはdoubleのポインタを渡しているので、%fと%lfの区別があります。

umi********さん

2012/1/2522:27:37

hiro_geniusさん
> ちなみに、誤解している人があまりに多いために
そのようですね。

そんなレベルでカテゴリマスターと名乗れるところが知恵袋クオリティー。

プロフィール画像

カテゴリマスター

shi********さん

2012/1/2519:40:42

fは実数,lfは倍精度実数です。doubleにはlfですが、そこまでの桁数がなければfで代用してもかまいません。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる