#include<stdio.h>
int main(){
double n1,n2;
float n3;
printf("input 2 flt:");
scanf("%lf %lf",&n1,&n2);
n3 = n1 * n2;
printf("n1 * n2 = %.2lf",n3);
}
当我设置n1,n2为float时,n3无法正确计算,为什么?
代码最初来自a online tutorial , 修改以测试 %lf 的功能。
最佳答案
因为您需要使用正确的 scanf()
说明符。
如果您使用float
,则"%f"
,如果您使用double
,则"%lf"
.
对于float
,你可以这样做
#include<stdio.h>
int main()
{
float n1, n2;
float n3;
printf("input 2 flt:");
if (scanf("%f%f", &n1, &n2) == 2) {
n3 = n1 * n2;
printf("n1 * n2 = %.2f",n3);
}
}
对于double
#include<stdio.h>
int main()
{
double n1, n2;
double n3;
printf("input 2 flt:");
if (scanf("%lf%lf", &n1, &n2) == 2) {
n3 = n1 * n2;
printf("n1 * n2 = %.2f",n3);
}
}
请注意,在使用 n1
和 n2
的值之前,我检查了 scanf()
是否返回了 2
,这是因为如果您不检查程序可能会调用未定义的行为,因为 n1
和/或 n2
未被初始化。
您的 printf()
说明符也是错误的,对于 float
和 double
您可以使用 "%f"
,阅读文档。
关于c - 基本的,关于说明符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45782899/