C++基础(3)在 C/C++ 中编写 void main() 或 main() 可以吗?

793 阅读2分钟

我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第3篇文章,点击查看活动详情

在 C++ 中,main 的默认返回类型是 void,即 main() 不会返回任何内容。但是,在 C 中,main 的默认返回类型是 int,即 main() 默认返回一个整数值。

在 C 中,void main() 没有定义(合法)的用法,它有时会抛出垃圾结果或错误。但是,main() 用于表示不带参数并返回整数数据类型的主函数。

定义不是,也从来不是 C++,甚至也不是 C。参见ISO C++ 标准 3.6.1[2]ISO C 标准 5.1.2.2.1。更多。

void main(){
// Body
}

 符合要求的实现接受下面给出的格式:

int main(){ 
// Body
}

int main(int argc, char* argv[]){
// Body
}

一个符合要求的实现可能会提供更多版本的 main(),但它们都必须具有返回类型 int。main() 返回的 int 是程序向调用它的“系统”返回值的一种方式。在不提供此类工具的系统上,返回值被忽略,但这不会使“void main()”合法 C++ 或合法 C。 

注意: 即使您的编译器接受void main() 也要避免它,否则可能会被 C 和 C++ 程序员认为是无知的。在 C++ 中,main() 不需要包含显式的 return 语句。在这种情况下,返回值为 0,表示执行成功。

例子:

// CPP 程序演示带有返回类型的 main()
#include <iostream>
using namespace std;

// 驱动程序代码
int main()
{
	cout<< "该程序返回整数值 0\n";
}

输出

该程序返回整数值 0

注意:  ISO C++ 和 C99 都不允许您将类型排除在声明之外。也就是说,与 C89 和 ARM C++ 相比,在声明中缺少类型的地方不假定 int 。

最后,

#include <iostream>
using namespace std;

main() // c++中main的默认返回类型是int
{
	// Body
	cout<<"这将返回整数值。";

	return 0;
}

上面的代码没有错误。如果您编写整个无错误的 main() 函数,最后没有 return 语句,那么编译器会自动在程序末尾添加一个具有正确数据类型的 return 语句。 

综上所述,使用void main() 或简单地使用 main () 绝不是一个好主意,因为它不确认标准。不过,某些编译器可能允许这样做。

如果您发现任何不正确的地方,或者您想分享有关文章的更多信息,可以在下方评论