C语言 arguments of main?



我知道main的签名是:

int main(int argc, char **argv);

但是我真的不知道为什么像这样的main也可以工作:

main(a){}

a在这里做什么?为什么编译器不显示错误??因为我在使用它之前没有声明'a'

这是旧C代码的一个特性,称为"隐式整型"。任何未指定类型的变量都假定为int。类似地,任何未指定返回类型的函数都假定返回一个int。现在认为已弃用,但在混淆代码和代码高尔夫中很有用。

所以你应该读成

int main(int a) {}
其中的int s因为隐式而被省略。正如WhozCraig提到的,从标准的角度来看,这是不符合不可移植的。但实际上,很多编译器会在不符合标准的模式下允许你这样做。

隐式的int行为并不能使您免于声明变量。

main(a){
    b,c; // int declarations
    c = 5;
    b = c + 10;
    d = b; // No! d is not declared for you, even with implicit int happening.
    return 0;
}

相关内容

最新更新