为什么用int可以求出加减法来啊,而用float不可以求出来啊?

来源:百度知道 编辑:UC知道 时间:2024/09/27 15:19:59
对于下面这两个函数来说,
int add (int a,int b)
{
return a+b;
}
int subtract(int a,int b)
{
return a-b;
}
int t(int a,int b,int(*p)())
{
return p(a,b);
}
void main()
{
int a,b;
int add(),subtract();
printf("Input a,b:");
scanf("%d,%d",&a,&b);
printf("a+b=%d\n",t(a,b,add));
printf("a-b=%d\n",t(a,b,subtract));
}

float add (float a,float b)
{
return a+b;
}
float subtract(float a,float b)
{
return a-b;
}
float t(float a,float b,float(*p)())
{
return p(a,b);
}
void main()
{
float a,b;
float add(),subtract();
printf("Input a,b:");
scanf("%f,%f",&a,&b);
printf("a+b=%f\n",t(a,b,add));
printf("a-b=%f\n",t(a,b,subtract));
}
前一个函数可以求出来加法和减法来,而后一个不可以,为什么?
我这个是在visual c++里面调试的。

编译通不过因为他的函数指针写错了。因该是
int(*p)(int a,int b)
C++中函数指针参数要写明白,不然不知道你到底要指哪个,产生二义性不说,严重影响程序的健壮和安全,函数指针绝对不能指向不同类型,或者是带不同形参的函数。

还有楼主误会上面的了,VC5能通过是因为他检查还不够严格,可能会通过,但是VC6.0是绝对通不过。

再者还要再主函数去掉int add(),subtract();的声明

至于楼主说的float不能用,完全没有可能

楼主多留心注意程序的健壮性和安全性。

#include <stdio.h>

int add (int a,int b)
{
return a+b;
}
int subtract(int a,int b)
{
return a-b;
}
int t(int a,int b,int(*p)(int,int)) //
{
return p(a,b);
}
void main()
{
int a,b;
printf("Input a,b:");
scanf("%d,%d",&a,&b);
printf("a+b=%d\n",t(a,b,add));
printf("a-b=%d\n",t(a,b,subtract));
}

不知道
dev c++编译到函数指针那通不过了~~

不知道你的为什么,我的这个可以得出正确结果,是visual c++5.0
只是程序在我这儿通不过编绎, 定义的函数指针int(*p)(),在下面调用的时候是p(a,b),应该不能通过编绎才对,参数个数都不一样,不知道你用的是什么超级编绎器..........

改成:
float t(float a,float