小小的程序却研究不出来为什么(浮点多维数组输入有什么要求?)解决方法
小小的程序却研究不出来为什么(浮点多维数组输入有什么要求?)
TC内核的编译问题:
main()
{
float num[2][2] ;
int i = 0, j= 0 ;
scanf( "%f ", &num[i][j]) ;
getch() ;
}
编译没问题
运行后一闪而过
程序运行错误提示:
scanf:floating point formats not linked
Abnormal program termination
这么常用的东西竟然有这说道 感觉挺知道研究
------解决方案--------------------
http://www.khapre.org/blog/2005/07/scanf-floating-point-formats-not.aspx
------解决方案--------------------
就是说Borland公司的编译器(Borland c/c++, Turbo c/c++)不会自动链接浮点运算库除非你用到它(也就是你需要调用一个浮点函数)。
而scanf, printf中对后面参数不进行类型检查,如果你前面又没有调用浮点函数,编译程序时就没有把浮点运算库链接进来,程序运行时在scanf中读入%f就会出错。
那篇文章给了一个解决方案就是在前面定义一个函数,但不去调用它
static void forcefloat(float* p)
{
float f = *p;
forcefloat(&f);
}
TC内核的编译问题:
main()
{
float num[2][2] ;
int i = 0, j= 0 ;
scanf( "%f ", &num[i][j]) ;
getch() ;
}
编译没问题
运行后一闪而过
程序运行错误提示:
scanf:floating point formats not linked
Abnormal program termination
这么常用的东西竟然有这说道 感觉挺知道研究
------解决方案--------------------
http://www.khapre.org/blog/2005/07/scanf-floating-point-formats-not.aspx
------解决方案--------------------
就是说Borland公司的编译器(Borland c/c++, Turbo c/c++)不会自动链接浮点运算库除非你用到它(也就是你需要调用一个浮点函数)。
而scanf, printf中对后面参数不进行类型检查,如果你前面又没有调用浮点函数,编译程序时就没有把浮点运算库链接进来,程序运行时在scanf中读入%f就会出错。
那篇文章给了一个解决方案就是在前面定义一个函数,但不去调用它
static void forcefloat(float* p)
{
float f = *p;
forcefloat(&f);
}