#include<stdio.h>
int main(void)
{
int a=3,b=4;
int c;
c = max_min(a,b);
printf("the max no is %d\n",c);
}
int max_min(int a,int b)
{
if(a>b)
return a;
else if(b>a)
return b;
}
错误:&#39; max_min&#39;在这方面没有申明 c = max_min(a,b);
请帮帮我
答案 0 :(得分:2)
在main
之前定义你的功能,或者给你的功能前向声明。像这样 -
#include<stdio.h>
int max_min(int a,int b); // forward declaration
int main(void){
// your code
}
// rest of code
您需要在使用函数之前定义或提供前向声明,否则编译器将抛出错误,因为它在此之前看不到函数定义或声明。
答案 1 :(得分:1)
宣布它。即将int max_min(int a,int b);
置于main
之上。这将告诉编译器函数
即
#include<stdio.h>
int max_min(int a,int b);
int main(void)
{
int a=3,b=4;
int c;
c = max_min(a,b);
printf("the max no is %d\n",c);
}
int max_min(int a,int b)
{
if(a>b)
return a;
else if(b>a)
return b;
}
答案 2 :(得分:1)
添加一个原型,告诉编译器你以后定义了函数min_max。
#include<stdio.h>
int max_min(int a,int b);
int main(void)
{
int a=3,b=4;
int c;
c = max_min(a,b);
printf("the max no is %d\n",c);
}
int max_min(int a,int b)
{
if(a>b)
return a;
else if(b>a)
return b;
}
或在主
之前定义min_max#include<stdio.h>
int max_min(int a,int b)
{
if(a>b)
return a;
else if(b>a)
return b;
}
int main(void)
{
int a=3,b=4;
int c;
c = max_min(a,b);
printf("the max no is %d\n",c);
}
答案 3 :(得分:1)
您需要一个声明该函数的函数原型,因此编译器知道从#include<stdio.h>
int max_min(int a,int b); // function protoype
int main(void)
{
int a=3,b=4;
int c;
c = max_min(a,b);
printf("the max no is %d\n",c);
}
int max_min(int a,int b)
{
if(a>b)
return a;
else if(b>a)
return b;
}
调用的内容。
a == b
BTW编译器应报告&#34;并非所有控制路径都返回值&#34;因为using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
(...)
static class MainApp
{
static void Main()
{
// TODO : Load codes via Roslyn
}
static void DoSomething()
{
// Do something
}
}
时函数没有返回任何值。
答案 4 :(得分:1)
你真的需要花几天时间读一本关于C编程的书。
您还应该查看C reference等网站。
在C中,每个函数都应该在被使用之前被声明(可能在某个included标题中)。
请在<{1}} 之前移动max_min
函数,或者声明它:
main
在申报时,您无需为正式命名,因此可以进行以下简短声明:
int max_min(int a,int b);
BTW,int max_min(int,int);
实际上是一个糟糕且令人困惑的名字(因为你不计算最小值,只计算最大值)。您的意思是max_min
或者max
或my_max
。
不要忘记使用所有警告和调试信息进行编译(例如maximum
如果使用GCC编译器)。然后使用调试器(例如GNU gdb
)。也许聪明的编译器会注意到,当gcc -Wall -g
等于a
时,您不会覆盖这种情况。
您需要test your program获取多个输入(并且您也可以使用formal methods来证明其正确性w.r.t。specifications,例如在Frama-C的帮助下。您可以从传递给b
的程序参数(使用atoi转换它们)中获取它们,而不是使用a
和b
的各种值重新编译代码。
main
等...
然后,您可以使用int main(int argc, char**argv) {
int a= 10;
int b= 5;
if (argc>1)
a = atoi(argv[1]);
if (argc>2)
b = atoi(argv[2]);
printf("a=%d b=%d\n", a, b);
运行您的程序(在某个终端中)进行测试,./myprog 3 4
等于3,a
等于4.实际上您将运行{{3} (例如b
)。
顺便说一句,您还可以阅读(in the debugger)gdb --args ./myprog 3 4
和a
的值。
答案 5 :(得分:0)
尝试其中任何一个
首先在主要方法
之前声明方法#include<stdio.h>
int max_min(int,int);
int main(void)
{
int a=3,b=4;
int c;
c = max_min(a,b);
printf("the max no is %d\n",c);
}
int max_min(int a,int b)
{
if(a>b)
return a;
else if(b>a)
return b;
}
或在主方法
之前指定功能 #include<stdio.h>
int max_min(int a,int b)
{
if(a>b)
return a;
else if(b>a)
return b;
}
int main(void)
{
int a=3,b=4;
int c;
c = max_min(a,b);
printf("the max no is %d\n",c);
}