“C and C++ are considered weakly typed since, due to type-casting, one can interpret a field of a structure that was an integer as a pointer.”
我当前使用的开发语言为C/C++,为弱类型语言,主要因为:
1. 一些编程语言(例如C/C++)将指针暴露为数字值,并允许用户对它们执行算术运算。这些语言有时被称为“弱类型”,因为指针算法可用于绕过语言的类型系统
2. 偏向于容忍隐式类型转换。譬如说C语言的int可以变成double,及bool可以隐式转换为int
主流语言类型分类图
同时C/C++是静态类型,当然有人会说,C++的多态,不是也有运行时类型判定的特性(RTTI)吗,是的,C++有时候在运行的时候类型也是不知道的,会变化,需要临时判定,
但是即使是要判定也是在你规定好的小范围里变动(父类和派生类),所以总的来说C/C++为静态语言,编译时进行类型确定,否则编译器会报错
静态类型和动态类型解释大概如下:
1.动态类型语言:在运行期进行类型检查的语言,也就是在编写代码的时候可以不指定变量的数据类型,比如Python和Ruby
2.静态类型语言:它的数据类型是在编译期进行检查的,也就是说变量在使用前要声明变量的数据类型,这样的好处是把类型检查放在编译期,提前检查可能出现的类型错误,典型代表C/C++和Java
综上,大体可以将C/C++归类为静态类型,弱类型语言