BCPL是一门"无类型"的编程语言:它仅能操作一种数据类型,即机器字(machine　word)。1970年,肯·汤普逊为运行在PDP-7上的首个Unix系统设计了一个精简版的BCPL,这个语言被称为B语言,它也是无类型的。　Unix最早运行在PDP-7上,是以组合语言写成。在PDP-11出现后,丹尼斯·里奇与肯·汤普逊着手将Unix移植到PDP-11上,无类型的语言在PDP-11上愈发显得合适。PDP-11提供了多种不同规格大小的基本对象:一字节长的字符,两字节长的整型数以及四字节长的浮点数。B语言无法处理这些不同规格大小的对象,也没有提供单独的操作符去操作它们。　C语言最初尝试通过向B语言中增加数据类型的想法来处理那些不同类型的数据。和大多数语言一样,在C中,每个对象都有一个类型以及一个值;类型决定了可用于值的操作的含义,以及对象占用的存储空间大小。　1973年,Unix作业系统的核心正式用C语言改写,这是C语言第一次应用在作业系统的核心编写上。　1975年C语言开始移植到其他机器上使用。　史蒂芬·强生　(英语:　Stephen　C.　Johnson　)　实现了一套“可移植编译器”,这套编译器修改起来相对容易,并且可以为不同的机器生成代码。从那时起,C在大多数计算机上被使用,从最小的微型计算机到与CRAY-2超级计算机。C语言很规范,即使没有一份正式的标准,你也可以写出C程序,这些程序无须修改就可以运行在任何支持C语言和最小运行时环境的计算机上。　C最初在小型机器上实现,并且继承了一系列小语种编程语言的特点;与功能相比,C的设计者更倾向于简单和优雅。此外,从一开始,C语言就是为系统级编程而设计,程序的运行效率至关重要,因此,C语言与真实机器能力的良好匹配也就不足为奇。例如,C语言为典型硬件所直接支持的对象:　字符　,整数(也许有多种大小),以及浮点数(同样可能有多种大小)提供了相应的基本数据类型。　1978年,丹尼斯·里奇和布莱恩·柯林汉合作出版了《C程序设计语言》的第一版。书中介绍的C语言标准也被C语言程式设计师称作“K&R　C”,第二版的书中也包含了一些ANSI　C的标准。