eli*_*inx 3 c program-entry-point arguments
我知道主要的签名是:
int main(int argc, char **argv);
Run Code Online (Sandbox Code Playgroud)
但我真的不知道为什么像这样的主要也会起作用:
main(a){}
Run Code Online (Sandbox Code Playgroud)
这是什么'做'?为什么编译器不显示错误?因为我在使用它之前没有声明'a'.
它是旧C代码的一个特性,称为"隐式int".任何未指定类型的变量都假定为int.类似地,假定任何未指定返回类型的函数返回一个int.它现在被认为已被弃用,但在混淆代码和代码高尔夫中变得有用.
所以你应该把它读作
int main(int a) {}
Run Code Online (Sandbox Code Playgroud)
其中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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |