强类型,弱类型,动态类型,静态类型

“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++归类为静态类型,弱类型语言

原文地址:https://www.cnblogs.com/blog-yejy/p/9311189.html

时间: 2024-11-08 20:33:08

强类型,弱类型,动态类型,静态类型的相关文章

【OC学习-16】动态VS静态类型识别?什么是动态绑定和动态加载?

动态VS静态 我们在实例化一个对象时,一般都是如下,就是静态类型: ASPerson * person=[[ASPerson alloc]init]; 还有一种是动态类型: id person=[[ASPerson alloc]init]; 可以看出来: (1)一般的带有明显类名(静态指针)的都是静态类型,而用id的通用指针的都是动态类型: (2)静态类型更容易阅读,更友好: (3)一般不涉及多态的时候,尽量用静态类型. 动态绑定和动态加载 这其实是针对类和对象说得,就是很多事情都不是事先弄好的

静态类型&动态类型

何时使用:使用存在继承关系的类型时,必须将一个变量或其他表达式的静态类型与该表达式表示对象的动态类型区分开来 静态类型:表达式的静态类型在编译时总是已知的,它是变量声明时的类型或表达式生成的类型 动态类型:动态类型直到运行时才可知,(变量或)表达式表示的内存中的对象的类型 如果表达式既不是引用也不是指针,则它的动态类型永远与静态类型一致. 如当print_total调用net_price时:double ret = item.net_price(n);,我们知道item的静态类型是Quote&,

变量类型和可空类型

1.变量类型 a.静态类型:编译时确定且不能在不能在运行时修改. b.动态类型:直到运行时才会被解析. 由于动态语言(如:IronPython和IronRuby)为.NET语言,所以C#程序需要能够使用这些语言编写的程序集.为解决这一问题,C#语言的设计者为语言增加了dynamic关键字. c.dynamic关键字:代表一个特定的.实际的C#类型,它知道如何在运行时解析自身.也就是说,它是动态化的静态类型. 2.可空类型 在一些情况下,我们希望表示变量目前未保存有效的值.对于引用类型,我们可以将

弱类型、强类型、动态类型、静态类型

装载: https://www.zhihu.com/question/19918532 弱类型: > "1"+2 '12' 强类型: >>> "1"+2 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: cannot concatenate 'str' and 'int' objects

动态语言,静态类型,强类型定义语言,弱类型定义语言,

1 动态语言和静态语言 通常我们所说的动态语言.静态语言是指动态类型语言和静态类型语言.   1 动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来.Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言. 2 静态类型语言:静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在

动态语言 静态语言 强类型语言 弱类型语言

一 .静态语言的优势到底在哪? 引用 是像Java或者C#这样强类型的准静态语言在实现复杂的业务逻辑.开发大型商业系统.以及那些生命周期很长的应用中也有着非常强的优势 这是一个存在于大家心里常识了.我承认我自己在潜意识里面也觉得静态强类型语言适合开发复杂,大型系统.而弱类型脚本语言不适合开发太复杂,太大型的项目.但是在参与这个讨论过程中,我突然开始置疑这个观点,事实究竟是不是这样的呢? 先定义一下标准: 静态类型语言是指在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须

OC 动态类型和静态类型

多态 允许不同的类定义相同的方法 动态类型 程序直到执行时才能确定所属的类 静态类型 将一个变量定义为特定类的对象时,使用的是静态形态 将一个变量定义为特定类的对象时,使用的是静态类型,在编译的时候就知道这个变量所属的类,这个变量总是存储特定类的对象.使用静态类型时,编译器尽可能的确保变量的用法在程序中始终保持一致,编译器能够通过检查来确定应用于对象的方法是由该类定义的或者由该类继承的,否则就会显示警告,静态类型能够更好地在程序编译阶段就指出错误.并且使用静态类型可以提高程序的可读性 简单来说:

C++ 对象的静态类型与动态类型

在C++当中:因为出现了继承: 继承导致对象的指针和引用具有两种不同的类型: 静态类型 和 动态类型 . 静态类型 :指针或者是引用声明时的类型. 动态类型 :由他实际指向的类型确定. class Base { } class Derived:public Base { } Base* base //base的静态类型是 Base* = new Derived;//base的动态类型是 Derived* Derived* derived //derived的静态类型是 Derived* = ne

强类型弱类型

GPS平台.网站建设.软件开发.系统运维,找森大网络科技!http://cnsendnet.taobao.com来自森大科技官方博客http://www.cnsendblog.com/index.php/?p=525 [强类型弱类型]一直说C#是强类型语言,通俗地讲,便是指C#中的"变量"在开发时的类型便是明确的:String便是String,Int32就是Int32,毫无争议.强类型的好处有很多,张嘴便可随意举上几例: 能够享受代码提示功能? 能够获得重构工具的支持? 能够在编译期发