回 帖 发 新 帖 刷新版面

主题:scanf大于0的实数,printf变成小数怎么回事?

请教达人解惑:
lcc win32编译器,xp操作系统,用dos命令行编译如下代码
#include<stdio.h>
int main(void) 
{while(1)
    {
    double input;
    printf("put");
    scanf("%lf",&input);
    printf("input now is %f\n", input);
}
}

运行输入1,则结果显示0.100000,而如果输入0.1则结果正确0.100000.
非常迷惑???

回复列表 (共3个回复)

沙发

输入的时候是   %lf    输出的时候是%f   我估计是这里的错误,他们在内存中所占的字节数不同,你看下浮点数在计算机内部的表示应该就明白了
还有就是  scanf  在正式工程中几乎是不允许使用的,请从现在开始放弃这个有BUG的函数

板凳

代码没问题

3 楼

學scanf沒什么壞處,而且在實際工程雖然基本不用scanf但用sscanf卻非常正常。每個語句、函數的存在基本都是有其一定的作用的。

我来回复

您尚未登录,请登录后再回复。点此登录或注册