VC6 scanf float 出错----bug?

作者在 2014-03-13 22:31:26 发布以下内容
#include <stdio.h>
int main()
{
float f;
scanf("%f", &f);
return 0;

}

请有VC6.0的朋友试一下这个程序,运行的时候输入一个数字,会出现runtime error(运行期错误),VS2008没有错误,其它的版本没有试。

查了一下资料微软给出的官方解释是:当应用程序从控制台读取的浮点值,到一个未初始化"浮动"类型的全局变量使用 scanf() 函数时,则会发生 R6002 浮点格式支持不加载"错误。 在使用任何格式输入的例程中读取值时,也会发生此错误。

微软的官方解决方案:要变通解决此问题,初始化浮点变量或表达式中包含 scanf() 调用该例程中使用该变量。

看来变量的初始化确实是个很好的习惯,我们可以这样改:

#include <stdio.h>
int main()
{
float fl = 0;
scanf("%f", &fl);
return 0;
}

默认分类 | 阅读 1581 次
文章评论,共0条
游客请输入验证码