首页 > 解决方案 > 将 return 0 与 void main() 一起使用?

问题描述

我只是想看看会发生什么,如果我使用return 0带有void main(). 我原以为编译器会给出一个错误,但它只是给出了一个警告并成功执行了程序,但最后返回了一些非零值,现在我怀疑为什么程序执行时没有错误,然后当我返回一些值时用过void main()

#include<stdio.h>

void main()
{
    printf("Hello World\n");
    return 0;
}

标签: creturnvoid

解决方案


我怀疑为什么程序执行时没有错误,然后在我使用 void main() 时还返回一些值

C 标准说正确的做法是int main,并且允许符合要求的实现允许其他签名,main如果它愿意的话。

显然,您的实现选择允许这种非标准用法,并且它表现出的行为是编译时的警告,然后是运行时观察到的行为。

但你已经知道了。编译器做编译器所做的事情,因为编译器作者是这样写的。如果您想知道他们做出这些选择的原因,请询问他们。由于您还没有说您使用的是什么编译器,所以我们没有更多的事情要做。


推荐阅读