[解決済み] C言語における%fと%lfの違いは何ですか?
質問
C言語の本で、C言語の例でこの2つのパラメータを見ましたが、著者はこの2つの違いが何であるか詳しく説明していません。私が知っているのは
%f
は、floatが代わりになるように指定します。調べてみたのですが、このw記号を見つけるのに苦労しました。についてはどうでしょうか。
%lf
?
解決方法は?
に影響を与えないというのが、端的な答えです。
printf
の使用を示しています。
float
または
double
で
scanf
.
について
printf
のようなタイプの引数は
float
に昇格します。
double
ということで、両方の
%f
と
%lf
は
double
. について
scanf
を使用する必要があります。
%f
に対して
float
と
%lf
に対して
double
.
以下、言語専門家のために詳しく説明します。
との違いはありません。
%f
と
%lf
の中に
printf
ファミリーを使用します。ISO C規格(中の参照はすべてC11から)、セクション
7.21.6.1 The fprintf function
段落
/7
の状態では
l
という修飾語(私の強調)があります。
以下のように指定します。
d
,i
,o
,u
,x
またはX
変換指定子が適用されるのはlong int
またはunsigned long int
引数で、次のn
へのポインタに適用される変換指定子です。long int
引数で、次のc
変換指定子が適用されるのはwint_t
引数で、次のs
へのポインタに適用される変換指定子です。wchar_t
の引数を指定します。 には効果がなく、次のa
,A
,e
,E
,f
,F
,g
またはG
変換指定子。
を変更する必要がないのは、そのためです。
f
指定子は、その指定子
すでに
を表します。
double
段落から
/8
の型が記載されている同セクションの
%f
指定子を使用します。
A
double
浮動小数点数を表す引数は、10進数表記に変換されます。
これは、関数プロトタイプの楕円の後にある引数が、以下のセクションにあるようにデフォルトの引数プロモションの対象となることと関係があります。
6.5.2.2 Function calls
段落
/7
:
関数プロトタイプの宣言子で省略記法を使用すると、最後に宣言されたパラメータ以降で引数の型変換を停止します。デフォルトの引数昇格は、末尾の引数に対して実行されます。
以来
printf
(そして、全体の
ファミリー
の
printf
-のような関数) は、次のように宣言されます。
int printf(const char * restrict format, ...);
を省略記法で記述した場合、そのルールがここで適用されます。デフォルトの引数プロモーションは、セクション
6.5.2.2 Function calls
段落
/6
:
呼び出された関数を表す式がプロトタイプを含まない型である場合、各引数に対して整数の昇格が行われ 型である引数は
float
に昇格します。double
. これらは、デフォルトの引数プロモーションと呼ばれます。
については
scanf
ファミリーを使用することを義務付けています。
double
ではなく
float
. セクション
7.21.6.2 The fscanf function /11
:
以下のように指定します。
d
,i
,o
,u
,x
,X
またはn
の型へのポインタを持つ引数に適用される。long int
またはunsigned long int
; その次のa
,A
,e
,E
,f
,F
,g
またはG
の型へのポインタを持つ引数に適用される。double
; または、次のc
,s
または[
の型へのポインタを持つ引数に適用される。wchar_t
.
これは
/12
の場合、そのセクションの段落は、次のようになります。
%f
:
オプションで符号付き浮動小数点数、無限大、または
NaN
の主語シーケンスに期待されるものと同じ形式である。strtod
関数を使用します。対応する引数は、floating へのポインタでなければならない。
関連
-
[解決済み】Valgrind - strcpyのサイズ1の無効な書き込み
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] mallocの結果はキャストするのですか?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] C++でextern "C "を使用した場合の効果は?
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み] ++iとi++の違いは何ですか?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み】定義と宣言の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Valgrind が "Invalid write of size 8" で文句を言う。
-
[解決済み】警告:互換性のないポインタ型からの代入
-
[解決済み】式は、単純なポインタ演算を使用して完全なオブジェクト型へのポインタでなければなりません【重複】。
-
[解決済み】「無効なイニシャライザー」と表示されるのですが、何が間違っているのでしょうか?
-
[解決済み】C言語で浮動小数点例外(コアダンプ)発生
-
[解決済み】スレッド1:EXC_BAD_ACCESS(コード=1、アドレス=0x0)標準Cメモリ問題
-
[解決済み] エラー:整数が期待されるところで集約値が使用された
-
[解決済み】未定義参照 makefile が間違っているのかも?
-
[解決済み】なぜか。"エラー: 配列型を持つ式への代入"
-
[解決済み】エラー:呼び出されたオブジェクトは、関数または関数ポインタではない