原则上来说,C/C++是一种严格数据类型的语言,简单说,语法对于函数声明、赋值、传参等涉及到数据类型的地方都会有严格的验证和匹配规则。
但也有”例外“——C/C++的潜规则之默认数据类型。
这里举两个例子:
1.函数参数
bool DoSomething(unsigned Data);
上面的写法是合法的,可以通过编译,其中,Data的数据类型是unsigned int,即无符号整型。
注意,不能写成这样:
bool DoSomething(Data);
编译器是不会把Data脑补成int类型的。
2.函数返回值
Foo(void);
在C中这样的写法是合法的,Foo的返回值类型默认为int类型;值得注意的是,C++中是不允许这样写的。
unsigned Foo(void);
参考例1,很容易知道,Foo的返回值类型是unsingned int类型,这在C和C++中都是合法的。