我有一个包含浮点数变量的结构体。
struct MyStruct{
float p;
}newMyStruct;
我正在使用scanf
将一个值读入其中。
int main(){
scanf("%f",&(newMyStruct.p));
}
问题在于使用
printf("%f",newMyStruct.p)
打印时,它会打印出'0.000000'。此外,我收到了一个警告,该警告指出参数是double类型,而格式要求是float类型(针对scanf("%f",&(newMyStruct.p));
语句)。当我将scanf()
的语法更改为scanf("%0f",&(newMyStruct.p));
时,printf("%0f",newMyStruct.p);
正确地打印浮点数值,但编译器发出了另一个警告(与精度为0有关)。
另外,printf("%2f",newMyStruct.p)
以其他格式打印浮点数。因此,我的问题是如何消除所有这些警告并读取正确的浮点变量,使其可以正确地打印。
&
。 - thunderbirdscanf()
的警告不太可能是“格式期望它是浮点数”。更可能的是“格式期望它是浮点数指针”。请提供您输入的内容和输出的内容。 - chux - Reinstate Monica0.0
的double
底部,因此您只创建了一个微小的次正常值(仅尾数非零),因此使用%f
(而不是科学计数法)打印它会将其四舍五入为零。您的[mcve]使用float
,但这很可能不是您实际运行的内容。 - Peter Cordes