我对 C 中的转换说明符有疑问。
在第 5 句中,如果我使用 %lf
或 %Lf
而不是 %f
,则不会发生错误。但是为什么使用%f
会出错呢?
#include <stdio.h>
int main(void)
{
long double num;
printf("value: ");
scanf("%f",&num); // If I use %lf or %Lf instead of %f, no error occurs.
printf("value: %f \n",num);
}
最佳答案
%f
用于读取 float
,而不是 double
或 long double
.
%lf
用于读取 double
。
%Lf
用于读取 long double
。
如果您的程序在变量类型为long double
时使用%lf
,那只是巧合。它起作用可能是因为 sizeof(double)
与您平台上的 sizeof(long double)
相同。理论上,这是未定义的行为。
关于c - 关于 C 中的转换说明符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38427832/