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

回答編集履歴

1

誤字修正ほか

2021/04/25 07:35

投稿

maisumakun
maisumakun

スコア146641

answer CHANGED
@@ -5,6 +5,6 @@
5
5
 
6
6
  > printfの時の出力指定子は%fで,どうしてscanfの時は%lfなのか
7
7
 
8
- `printf`は可変長引数ですが、可変長引数の変数に`float`を渡そうとしても、**定の実引数拡張**という変換が入って、結局は`double`が渡されるので、`float`でも`double`でも指定子は同じものを指定する形となります(ただし、あまりに皆が間違いすぎるので、`%lf`も`double`を処理できるようになってしまっています)。
8
+ `printf`は可変長引数ですが、可変長引数の変数に`float`を渡そうとしても、**定の実引数拡張**という変換が入って、結局は`double`が渡されるので、`float`でも`double`でも指定子は同じものを指定する形となります(ただし、あまりに皆が間違いすぎるので、C99では`%lf`も`double`を処理できるようになってしまっています)。
9
9
 
10
10
  一方で、`float*`と`double*`は可変長引数で渡しても変換されない(変換できない)ので、書式を別に設定させる必要があります。