c语言是一种中级语言
c语言常常被称为中级语言。并不是说c语言不够强大,也不是说它很容易掌握,更不是说它不如其他高级语言如Basic、Pascal那样先进。同时,c语言也不像汇编语言那样的繁琐。c语言之所以被认为是中级语言,主要是因为它把高级语言的优秀特性和汇编语言的控制力、灵活性结合在了一起。表1-1展示了c语言在所有编程语言光谱中的位置。
表1-1:C's Place in the World of Languages
Highest level Ada
Modula-2
Pascal
COBOL
FORTRAN
BASIC
Middle level Java
C#
C++
C
Forth
Macro-assembler
Lowest level Assembler
做为中级语言,c语言允许访问位、字节和地址等计算机底层功能元件。尽管这样,c语言代码仍然具有高度的可移植性。可移植性是指能方便的把为某一特定计算机开发的代码的改写成适用于另一种计算机的代码的特性。例如,如果你使一个为Unix操作系统编写的程序同样能在windows操作系统上运行,那么这个程序就具有可移植性。
所有的高级语言都支持数据类型的概念。数据类型定义了该类型变量可以存储的值的集合,并且还定义了可应用于这种变量的一个操作符的集合。常见的数据类型有整型、字符型、实数类型。尽管c语言定义了5种基本类型,但是和Pascal和Ada语言一样,c语言并不是强数据类型语言。c语言几乎允许所有的类型转换。例如,c语言允许把整型和字符型变量放在通一个表达式中进行运算。
c语言与高级语言不同的一个地方是:c语言不对运行时错误提供检测机制。比如,c语言无法确保数组在程序运行时不越界。对于数组越界等运行时错误的检查要求程序员自己去完成。
同样,c语言也不要求形参和实参的数据类型有严格的兼容性。如果你具有其它高级语言的编程经验,你会知道,大部分高级语言基本上都要求实参和接受该实参的形参的数据类型有严格的对应,而c语言并非如此。相反,c语言允许实参使用任何数据类型,只要该类型可以转换为形参可以接受的类型。同时为了实现这些功能,c语言提供了几乎所有数据类型之间的转换机制。
c语言具备一个特点就是它允许对位、字节、字以及指针的直接操作。这使得它非常适合进行系统级的开发。
c语言还有一个重要的特点实它使用的关键字数量不多。例如,C89标准仅仅给c语言定义了32个关键字,C99标准也只添加了另外5个。对比之下,大部分版本的Basic语言都有至少100个以上的关键字!