为什么“scanf("%.3f",&a);”这一行不能是浮点数存入浮点变量a中,保留小数点后三位?

问题描述 投票:0回答:1

输出为0.000 为什么输出结果是这样的?它的原理是什么?为什么浮点数不能存储? 请大家帮我解答一下我的问题,谢谢

#include <stdio.h>
    
int main(){
    float a;

    scanf("%.3f", &a);

    printf("%.f", a);

    return 0;
}
c scanf
1个回答
0
投票

%.3f
不是
scanf
的有效转换说明符,因为
.3
用于指定输出精度,而不是输入精度。您可以使用
%f

使用无效的转换说明符,该行为不是由 C 标准定义的。您的

scanf
实现可能会检查字符串,找不到任何要执行的正确转换,然后返回而不读取任何输入,可能会出现错误返回代码 (
EOF
)。因此,没有为
a
分配任何值。

© www.soinside.com 2019 - 2024. All rights reserved.