【发布时间】:2018-04-15 10:46:40
【问题描述】:
#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
【问题讨论】:
-
main函数应该被声明为返回一个int。它是 C 规范的一部分。不这样做会导致undefined behavior。参见例如thismainfunction reference 了解更多信息。 -
这给了我错误 NZEC(非零退出代码) 这就是您使用
void main()得到的结果 -
您是否碰巧收到了编译器的警告?
-
我在网上为hacker earth运行了这个...执行错误,但代码编译成功。