teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

プロトタイプで明示した場合には起きないので

2016/01/08 07:22

投稿

maisumakun
maisumakun

スコア146702

answer CHANGED
@@ -1,5 +1,5 @@
1
1
  `scanf`で値を読み取る場合、書式は`%f`ではなく`%lf`が正しいです。逆に、`printf`で出力する場合には`%f`が正解となります。
2
2
 
3
- これは、関数の引数にした場合に`float`は自動で`double`へと変換されるのに対して、ポインタについてはそのまま渡るがゆえの現象です。
3
+ これは、可変長関数の引数にした場合に`float`は自動で`double`へと変換されるのに対して(既定の実引数拡張)、ポインタについてはそのまま渡るがゆえの現象です。
4
4
 
5
5
  [本日少し前にも同じ所で引っかかった例があった](https://teratail.com/questions/24155)ように、[うっかりしがち](http://www.kijineko.co.jp/tech/superstitions/printf-format-for-double.html)なところではあります。

1

類例

2016/01/08 07:22

投稿

maisumakun
maisumakun

スコア146702

answer CHANGED
@@ -1,3 +1,5 @@
1
1
  `scanf`で値を読み取る場合、書式は`%f`ではなく`%lf`が正しいです。逆に、`printf`で出力する場合には`%f`が正解となります。
2
2
 
3
- これは、関数の引数にした場合に`float`は自動で`double`へと変換されるのに対して、ポインタについてはそのまま渡るがゆえの現象です。
3
+ これは、関数の引数にした場合に`float`は自動で`double`へと変換されるのに対して、ポインタについてはそのまま渡るがゆえの現象です。
4
+
5
+ [本日少し前にも同じ所で引っかかった例があった](https://teratail.com/questions/24155)ように、[うっかりしがち](http://www.kijineko.co.jp/tech/superstitions/printf-format-for-double.html)なところではあります。