为什么我不能在这个程序中构建一个无返回类型的函数?

时间:2014-05-21 05:36:44

标签: c function return void

这是一个使用函数相乘和添加两个数字的小程序。

#include<conio.h>
#include<stdio.h>

int main()

{
 int a,b,result;
 clrscr();
 printf("Enter two numbers to be added and multiplied...\n");
 scanf("%d%d",&a,&b);
add(a,b);
 getch();
 return 0;
}

int add(int a,int b)
{
int res;
 printf("%d + %d = %d", a,b,a+b);
 res=mult(a,b);
 printf("\n%d * %d = %d",a,b,res);
 return 0;
}

int mult(int a,int b)
{
 return a*b;
}

虽然,我不认为我需要一个返回类型添加功能,所以我尝试使用此代码...

#include<conio.h>
#include<stdio.h>

int main()

{
 int a,b,result;
 clrscr();
 printf("Enter two numbers to be added and multiplied...\n");
 scanf("%d%d",&a,&b);
add(a,b);
 getch();
 return 0;
}

void add(int a,int b)
{
int res;
 printf("%d + %d = %d", a,b,a+b);
 res=mult(a,b);
 printf("\n%d * %d = %d",a,b,res);
}

int mult(int a,int b)
{
 return a*b;
}

但是它告诉我错配类型声明有错误吗?

2 个答案:

答案 0 :(得分:6)

您需要在首次使用前提供原型:

void add(int a, int b); /* This tells the compiler that add() takes */
                        /* two ints and returns nothing.            */

int main() {
  ...
  add(a, b);
}

void add(int a, int b) {
  ...
}

否则编译器必须假设add()返回int

有关详细信息,请参阅Must declare function prototype in C?

答案 1 :(得分:0)

首先,您必须在使用之前输入声明

void add(int a,int b);
int mult(int a,int b);

然后您可以将定义放在任何地方。

或者你可以声明&amp;在使用之前定义