printf("%f") 或 printf("%lf") 用于 c 中的双打?
printf("%f") or printf("%lf") for doubles in c?
我的教授说,当你执行 scanf 时,双精度数用 %lf 表示,但在 printf 中它是 %f(用于浮点数。)
这很奇怪,因为他说在他的编码 class 中我们从不使用浮点数,只使用双精度数。他没有解释原因。
我写了一个简单的程序来打印双精度值。我将 printf 与 %lf 和 %f 一起使用。结果还是一样。
有什么区别?
对于所有 "vararg" 函数(声明包含 ...
的函数,例如 printf
和 scanf
)较小的类型将自动提升或转换为较大的类型.例如short
会提升为int
,float
会提升为double
.
这意味着 printf
格式 %f
和 %lf
是相同的,因为参数将是 double
.
但对于 scanf
,您不传递将被提升或转换的值,而是传递 指针 ,不会对其进行转换。指向 float
(即 float *
)的指针与指向 double
(即 double *
)的指针非常不同。所以对于 scanf
%f
和 %lf
是有区别的。
我的教授说,当你执行 scanf 时,双精度数用 %lf 表示,但在 printf 中它是 %f(用于浮点数。) 这很奇怪,因为他说在他的编码 class 中我们从不使用浮点数,只使用双精度数。他没有解释原因。
我写了一个简单的程序来打印双精度值。我将 printf 与 %lf 和 %f 一起使用。结果还是一样。
有什么区别?
对于所有 "vararg" 函数(声明包含 ...
的函数,例如 printf
和 scanf
)较小的类型将自动提升或转换为较大的类型.例如short
会提升为int
,float
会提升为double
.
这意味着 printf
格式 %f
和 %lf
是相同的,因为参数将是 double
.
但对于 scanf
,您不传递将被提升或转换的值,而是传递 指针 ,不会对其进行转换。指向 float
(即 float *
)的指针与指向 double
(即 double *
)的指针非常不同。所以对于 scanf
%f
和 %lf
是有区别的。