gpt4 book ai didi

c - 为什么 "int main(anything_you_type)"没有产生任何错误?

转载 作者:太空狗 更新时间:2023-10-29 16:53:50 27 4
gpt4 key购买 nike

这里我在主要参数声明中写了我的名字,但这个程序仍然有效并且没有给出任何警告。

#include <stdio.h>
int main(Mr32)
{
printf("why this works?");
return 0;
}

每当我用任何东西代替 mr32 时,代码仍然有效。我真的不知道为什么会这样。按照 C 编程标准,这是错误的,对吧?

编辑:我试过 -Wall 但它没有给出任何警告。

我认为这里应该是错误的,因为我没有按照标准的 C 函数定义声明来做

在c中每个函数定义都必须遵循这种格式

return-type function_name ( arg_type arg1, ..., arg_type argN ); 

这也应该适用于 main() 对吧..??

好的 -Wextra 显示 mr32 默认为 int 的警告。

那为什么main()中的任何参数的默认类型都是int?

最佳答案

在 K&R C 定义中,没有类型的参数默认为 int。然后您的代码对应于

int main( int Mr32 ) {
printf("why this works?");
return 0;
}

有关详细信息,请查看此答案:C function syntax, parameter types declared after parameter list

更新

总结一下:在 C89 中仍然支持 K&R 声明

  • 未声明的参数类型默认为int

    void foo( param )

    默认为

    void foo( int param )
  • 未指定的返回类型默认为 int

    foo()

    默认为

    int foo()

注意

虽然这是支持的,但我永远不会使用它:代码应该是可读的

关于c - 为什么 "int main(anything_you_type)"没有产生任何错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7566550/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com