【发布时间】:2020-03-01 06:52:11
【问题描述】:
前言:
这可能会被标记为重复,我理解,但我问这个,因为我觉得其他答案可能不太清楚。事实上,我发现对我最有意义的最接近的答案是这个:from 2015 和这个:from 2013, about return 0;
我的编程经验很少——几年前我搞砸了 Java,有点弄清楚我需要复制和粘贴什么来编辑我正在玩的程序,我用 python 编写了一个简单的程序,我在学校里和 Scratch 一起玩。但是,我终于决定坐下来,学习一门语言,C,然后继续学习。
所以,我想问的是,我的解释是否正确?因为,如果是这样,那么可以说,对于大多数意图和目的,int main()(没有参数)和int main(void) 之间没有区别。
实际重要性:
总结一下我目前的理解:
- 如果使用
int main(),则应在末尾添加return 0;,表示程序终止。 - 尽管可能,但使用
int main()而不使用return 0;是不合适的,因为许多编译器可能无法识别这一点。 - 如果使用
int main(void),则无需添加return 0;。
用简单的英语来说,这是否可以说是一个好的和/或准确的解释?
示例:
/*
* Program example using scanf, printf, and int main() with no variable
* This program reads a string from the user
*/
#include <stdio.h>
int main() {
char name[10]; /* number in square brackets is for max characters in name */
printf("Enter name: ");
scanf("%s", name); /* scanf will read input until it sees blank space, then stop */
printf("Hello, %s!\n", name);
return 0;
}
对比
/*
* Program example using scanf, printf, and int main(void)
* This program reads a string from the user
*/
#include <stdio.h>
int main(void) {
char name[10]; /* number in square brackets is for max characters in name */
printf("Enter name: ");
scanf("%s", name); /* scanf will read input until it sees blank space, then stop */
printf("Hello, %s!\n", name);
}
【问题讨论】:
-
return是关于返回类型,而不是参数。 -
回答(是),虽然有点语义问题,但在 C 中,带有空
()的函数采用 indeterminate 个参数,而(void)指定 零个参数。 -
Actual Importance:中的所有 3 个点都是错误的。 1)您不需要在int main()中添加return 0。 2) 可以使用int main()而不使用return 0。 3) 不必在int main(void)中添加return 0。In plain English用简单的英语,如果main返回一个int,则不需要写return 0。不管参数列表里面有什么。int main(/*anything here*/) { /* always returns 0 by default */ } -
嗯..也许标准会澄清一些事情。确切的规则是C11 5.1.2.2.3p1:
If the return type of the main function is a type compatible with int, .... reaching the } that terminates the main function returns a value of 0。如果它返回int并且执行到达main中的关闭},则它充当return 0。 -
风格差异很大。
int main()看起来您要么正在编写 C++,要么生活在 1987 年。
标签: c