C 为什么可以';函数中是否有字符返回?
我有这个程序,它给了我这个错误,你能解释为什么吗?我是c语言的新手,想了解它是如何工作的 代码 错误C 为什么可以';函数中是否有字符返回?,c,C,我有这个程序,它给了我这个错误,你能解释为什么吗?我是c语言的新手,想了解它是如何工作的 代码 错误 在声明main之前,您需要声明search,如果您在main()下面声明函数并希望在那里使用它们,您应该告诉编译器该函数存在,这意味着您的代码是: #include "stdio.h" char search(int number); // that is the line your code was missing before int main(void) { int calif
在声明
main之前,您需要声明search
,如果您在main()
下面声明函数并希望在那里使用它们,您应该告诉编译器该函数存在,这意味着您的代码是:
#include "stdio.h"
char search(int number); // that is the line your code was missing before
int main(void)
{
int calification;
printf("write a number: ");
scanf("%d", &calification);
printf("the calification is %c", search(calification));
}
char search(int number) { ... }
scanf中还有一个小问题,我已经解决了。如果输入的类型为int
,则需要使用%d
而不是%c
读取值,后者用于字符
。如果没有它,搜索(数字)
会将数字
与ASCII值进行比较-这意味着对于输入1、2、3、4,返回的值将是'n'
,而不是'a'
,…,'d'
首先必须定义函数,然后才能调用函数。为此,必须将函数置于main()之上:
在main()
之前添加函数原型声明,以便在main
中正确执行调用:char search(int number)
再次阅读scanf
的文档,并打开编译器警告,以便编译器可以帮助查找您的bug。在使用搜索
函数之前,您需要告诉编译器它的外观,否则编译器会假定它返回int
。您可以将定义放在main
之前,或者(可能更好)将其向前声明(放在main
之前),如下所示:char search(int number)代码>(单独一行)。这是否回答了您的问题?关于:#包括“stdio.h”
头文件:stdio.h
是一个系统头文件,因此应包含在:
中。您创建的头文件(即非系统头文件)应包含在“`myheader.h”中,关于:void main()
,根据C标准,这不是main()
的有效签名,非常感谢!为什么会发生这种情况?为什么我必须在main之前键入search?我问为什么我想了解c是如何工作的最简单的答案是编译器不知道这样的search(int)
函数存在。如果您在main
的正文中提到它,那么当您尝试在程序中的某个地方调用该函数时,它会查找该模式。非常感谢!为什么会发生这种情况?为什么我必须在main之前键入search?我问为什么我想了解c是如何工作的非常感谢!为什么会发生这种情况?为什么我必须在main之前键入search?我问为什么我想了解cworks@Jos编译器正在自上而下地评估这个文档main
必须至少知道search
的签名才能使用search
。这就是为什么@Eric纠正了我。您可以在以后的代码中为search
布局所有详细信息,但如果您打算使用它,至少必须提前声明签名。因此,您可以将search
的整个定义移动到main
上方,或者只需放置char search(int number)代码>位于主菜单的上方
,将搜索的肉和土豆留在下方,即它们当前所在的位置。
exercise3.c:11:6: error: conflicting types for 'search'
char search(int number)
^
exercise3.c:8:38: note: previous implicit declaration is here
printf("the calification is %c", search(calification));
#include "stdio.h"
char search(int number); // that is the line your code was missing before
int main(void)
{
int calification;
printf("write a number: ");
scanf("%d", &calification);
printf("the calification is %c", search(calification));
}
char search(int number) { ... }
#include "stdio.h"
char search(int number)
{
if (number == 1)
return ('a');
else if (number == 2)
return ('b');
else if (number == 3)
return ('c');
else if (number == 4)
return ('d');
else
return 'n';
}
main()
{
int calification;
printf("write a number: ");
scanf("%c", &calification);
printf("the calification is %c", search(calification));
}