c程序问题,高手指教,在线等,急!!在线等!!
#include "stdio.h "
//void TruncToint32(int& e,float fval)
int main()
{
int e;
float f = 0;
TruncToint32(e,f);
printf( "0 is %d\n ",e);
}
void TruncToInt32 (int& ival, float fval)
{
ival = *(int *)&fval;
int mantissa = (ival & 0x07fffff) | 0x800000;
int exponent = 150 - ((ival > > 23) & 0xff);
if (exponent < 0)
ival = (mantissa < < -exponent);
else
ival = (mantissa > > exponent);
if ((*(int *)&fval) & 0x80000000)
ival = -ival;
}
这段程序无论是tc2.0还是tc3.0都编译不过去。
提示function TruncToint32 should have a prototype
可是我的tc2.0和tc3.0都有stdio.h而且路径设置也没问题。
请高手帮忙看看程序哪里有问题,指教了。谢谢!
[解决办法]
首先你声明的地方后面没有;
其次你生命的函数名和定义的函数名不同 I 与 i
[解决办法]
tc这东西很久没用了 你给e一个初值试试看
[解决办法]
将声明中的int& e改为int& ival试试看
这在新的编译器上似乎都不是问题了,如果不想研究纯C的标准语法,建议换高级的编译器
- - 当然 在学校老师要求的话另当别论
[解决办法]
把主函数方后面就好了说明你的函数声明和定义有区别,会不会是你那个函数定义函数名后有空格的原因?
[解决办法]
void TruncToint32(int& e,float fval)
======================================
int &e 肯定有问题。你这里声明的是引用吧,在c里面是没有引用的,引用是c++的东西,所以c编译器肯定不会认识的。如果需要还是声明为指针吧,int *p,你再调试看看。
还有你声明语句的结尾丢了分号,而且既然把主函数定义为整型就需要给它一个返回值,不要丢了。