为什么用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 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
这个char类型形参表中为什么用int
C语言的问题int y; y=sizeof (2.25*4);求出y 的值是8。怎么来的啊
为什么c语言中有个“typedef int *******”的啊?既然有了int,为什么不直接用int算了啊?不解!
求出三位数abc来?
QQ为什么上不去啊 可以上INT网!
异分母分数加减法除了用通分还能用什么方法来算
c语言atoi与itoa用法以及超过long long int 型变量整数加减法
unsinged int中 int 可以省略?
为什么 set_date (int _year,int _month,int _day)中间要加一横
“void swap(int,int);”为什么要写在类定以外呢,这样有什么用啊