今天阅读代码时第一次碰到形如:
#include <stdio.h> void main() { printf("%d\n", add(2,3)); getchar(); } int add(a, b) int a;int b; { return a+b; }
这里定义函数add时,参数列表中没有指明形参a、b的类型,反而在 int add(a, b)之后补充说明了int a;int b;
试了下,还可以这么写:
#include <stdio.h> void main() { printf("%d\n", add(2,3)); getchar(); } int add(a, b)int a,b; { return a+b; }
还有更犀利的,定义add时前面的返回值都可以不要:
#include <stdio.h> void main() { printf("%d\n", add(2,3)); getchar(); } add(a, b) int a;int b; { return a+b; }
很有意思>_<。网上查了下说这是一种早期版本的C 语法,ANSI C 已不推荐使用。
上面代码在VS2010中都能编译通过,并且正常运行。