最后一条输出为什么没结果?

xqsong 2004-04-06 11:59:36
有下面简单的一个程序:
float add(float *a,float *b)
{float sum,aa;
sum=*a+*b;
aa=*a-*b;
*a=sum;
*b=aa;
printf("sum=%f,aa=%f\n",*a,*b);
}

main()
{float a,b;
scanf("%f%f",&a,&b);
printf("a=%f,b=%f\n",a,b);
add(&a,&b);
printf("a=%f,b=%f\n",a,b);}

其中主函数中最后一条输出语句有问题,为什么?(如果把所有数据类型都改为整型,整个程序运行又正确)
...全文
52 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangfjj 2004-04-07
  • 打赏
  • 举报
回复
函数类型为float,则要返回一个float值,这个值对于你的函数是没有意义的
reliances2003 2004-04-07
  • 打赏
  • 举报
回复
float add(float *a,float *b)
你这个函数得有返回值啊
xqsong 2004-04-07
  • 打赏
  • 举报
回复
再补充一句,我想知道的就是你们为什么让我将被调函数类型改为void,不改为什么就不行?
xqsong 2004-04-07
  • 打赏
  • 举报
回复
我觉得问题应该能看得懂呀:),程序没问题,随意输入合法的值都行,所有运行包括被调函数每条语句结果都对,就是主函数中最后一条输出语句会无结果.但一旦将被调函数的类型改为void则一切OK.问:对被调函数我并没没用到它的返回值,按道理被调函数的类型不管是float还是void都"应该"对主调函数的最后一条输出语句有影响啊?
dreameasy 2004-04-07
  • 打赏
  • 举报
回复
up!
sundaykid 2004-04-07
  • 打赏
  • 举报
回复
不會出錯呀,
就算是 float add(...),主程序的最後一行也有輸出呀,
我用的是microsoft visual c++ 6.0,隻是編譯時有個警告而已,
並不會引起最後一句無輸出呀.
shankeke 2004-04-07
  • 打赏
  • 举报
回复
not float
void
KingI 2004-04-07
  • 打赏
  • 举报
回复
是的,将函数声明为void表示不返回任何类型的值,因为你的函数不需要返回值,所以要声明为void型,否则会出错.
qingyuan18 2004-04-06
  • 打赏
  • 举报
回复
有啥问题?把报错的信息贴上来吧。
积木 2004-04-06
  • 打赏
  • 举报
回复
没有什么问题吧,顺便把你的程序的格式改了改

#include<stdio.h>
void add(float *a,float *b)
{
float sum,aa;
sum=*a+*b;
aa=*a-*b;
*a=sum;
*b=aa;
printf("sum=%f,aa=%f\n",*a,*b);
}

int main()
{
float a,b;
scanf("%f%f",&a,&b);
printf("a=%f,b=%f\n",a,b);
add(&a,&b);
printf("a=%f,b=%f\n",a,b);
return 0;
}
happlyman 2004-04-06
  • 打赏
  • 举报
回复
没有问题呀,可以输入结果,不知道你想要什么样的结果!
zhangfjj 2004-04-06
  • 打赏
  • 举报
回复
其中主函数中最后一条输出语句有问题,为什么?(如果把所有数据类型都改为整型,整个程序运行又正确)
----------
无论是int还是float,程序运行都应该正常
有一点要改,楼上改了
就是float add(...)函数的类型改为void型
你把你的问题说清楚
比如说当为float型时,输入多少,输出什么。。有问题,有什么样的问题

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧