问题描述
我看到一个C的例子,这两个参数在C的书,但作者没有详细说明什么,两者之间的区别是。我知道,%F
指定一个float应该取代其位置。我试图寻找这件事,但有一个很难试图找到该W符号。关于%LF
?
I saw these two parameters in a C example in a C book but the author didn't elaborate what the difference between the two are. I know that %f
specifies that a float should take its place. I tried looking this up but had a hard time trying to find this w symbols. What about %lf
?
推荐答案
有在的printf
家庭没有区别。在ISO C11标准(下面的所有引用来自C11),截面 7.21.6.1 fprintf函数
,段落 / 7
状态,对于→
修改(我的粗体):
There is no difference in the printf
family. The ISO C11 standard (all references below are from C11), section 7.21.6.1 The fprintf function
, paragraph /7
states, for the l
modifier (my bold):
指定后续的D,I,O,U,X,或X转换说明应用于long int或unsigned long int型参数;其后面的n转换说明适用于指向一个长整型参数;后续的c转换说明应用于wint_t参数;后续的s转换说明适用于一个指向wchar_t参数; 或有不影响后面的a,A,E,E,F,F,G,或G转换说明。
它并不需要修改˚F
说明的原因是因为符的已的表示双
,从段落 / 8
:
The reason it doesn't need to modify the f
specifier is because that specifier already denotes a double
, from paragraph /8
of that same section:
再presenting一个浮点数双参数转换为十进制表示在样式...
这是与事实,继在函数原型的椭圆参数是受默认参数提升为每节 6.5.2.2函数调用
,段落<$办C $ C> / 7 :
That has to do with the fact that arguments following the ellipse in the function prototype are subject to default argument promotions as per section 6.5.2.2 Function calls
, paragraph /7
:
...在一个函数原型声明符引起的参数类型转换到最后声明参数后,停止省略号。默认参数提升是在尾随参数执行。
由于的printf
(和它的整个家庭)的家庭被声明为 INT的printf(为const char *限制格式,...);
用省略号表示法,该规则适用于这里。默认参数促销活动将在第 6.5.2.2函数调用
,段落 / 6
:
Since printf
(and it's entire family) family is declared as int printf(const char * restrict format, ...);
with the ellipsis notation, that rule applies here. The default argument promotions are covered in section 6.5.2.2 Function calls
, paragraph /6
:
如果它表示所调用的函数的前pression有一个类型不包括样机,整数促销活动每个参数执行,和有float类型的参数都提升到两倍。这些被称为默认参数促销活动。
对于 scanf函数
系列,它要求使用的双击
而非浮动
。第 7.21.6.2 fscanf函数/ 11
:
For the scanf
family, it mandates the use of a double
rather than a float
. Section 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转换符适用于有类型的指针参数为双; 或后续的c,S或[转换符适用于有类型的指针参数传递给wchar_t的。
这会修改 / 12
该节中规定,对于第%F
:
This modifies the /12
paragraph of that section that states, for %f
:
匹配任选签署浮点数,无穷大或NaN,其格式是相同的预期的的strtod函数的目标序列。相应参数应为指针浮动。
这篇关于什么是%f和%LF在C之间的区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!