#include<stdio.h>
void main() {
char ch;
ch=getchar();
printf("%d",ch);
}
这给了我错误NZEC(非零退出代码)但是当我使用 -
时#include<stdio.h>
void main() {
char ch;
scanf("%c",&ch);
printf("%d",ch);
}
没有执行错误并接受解决方案 getchar()有什么问题?
我对C很新,所以我不知道我检查了scanf和getchar之间差异的答案,但我无法理解。请帮助我理解这种行为。
解决方案: 我不知道我的查询与这个问题有关: What should main() return in C and C++?
此外,这两个都有效 -
#include<stdio.h>
void main() {
int ch;
ch=getchar();
printf("%d",ch);
}
将char
更改为int
和 -
#include<stdio.h>
int main(void) {
char ch;
ch=getchar();
printf("%d",ch);
return 0;
}
将void
更改为int
答案 0 :(得分:2)
两者都是未定义的行为,因为main
应返回C标准定义的int
。在检查其返回码时,这一点尤其重要。
将定义更改为:
int main(void)
{
...
}
请注意,由于C99,main
不需要显式返回任何值。就像你最后有return 0;
一样。但是如果您使用的是C89,则需要明确返回值(或调用exit
)。
答案 1 :(得分:1)
您的main()
应该返回int
而不是void
正如n1570
标准
应使用返回类型int定义并且不带参数: int main(void){/ * ... * /}
将错误代码块替换为
int main() {
char ch;
ch=getchar();
printf("%d",ch);
return 0;
}