Pascal 是一种强类型的、结构化的编程语言,其语法非常严格和规范;而 C 语言则更加灵活、底层,语法相对宽松,这种设计哲学的差异也体现在它们的关键字上。

(图片来源网络,侵删)
C 语言关键字 (C Keywords)
C 语言的关键字根据其功能可以分为几大类,以下是 C89 (ANSI C) 标准定义的 32 个关键字:
数据类型关键字
char: 字符类型short: 短整型int: 整型long: 长整型float: 单精度浮点型double: 双精度浮点型signed: 有符号类型修饰符unsigned: 无符号类型修饰符void: 空类型,无值
存储类型关键字
auto: 自动变量,默认存储类型,通常省略static: 静态变量,生命周期贯穿整个程序register: 寄存器变量,建议编译器将变量存储在寄存器中extern: 声明外部变量,用于跨文件访问
流程控制关键字
if: 条件判断else:if的分支switch: 多路分支选择case:switch中的分支default:switch中未匹配时的默认分支while: 当型循环do: do-while 循环的一部分for: for 循环goto: 无条件跳转continue: 结束本次循环,进入下一次循环break: 跳出当前循环或switch语句
结构体、联合体、枚举关键字
struct: 定义结构体union: 定义联合体(共用体)enum: 定义枚举类型
运算符相关关键字
sizeof: 计算变量或类型所占内存空间(字节)的运算符typedef: 为数据类型定义新的别名
其他关键字
return: 从函数中返回值const: 定义常量,表示变量的值不能被修改
Pascal 关键字 (Pascal Keywords)
Pascal 的关键字数量比 C 语言多,并且语法上有很多 Pascal 特有的结构,以下是 Turbo Pascal 和 Free Pascal 中常见的关键字列表(约 50+ 个)。
标准数据类型
Integer: 整型Real: 实型(浮点数)Char: 字符类型Boolean: 布尔类型 (True/False)String: 字符串类型Text: 文本文件类型
流程控制
begin...end: 代码块的开始和结束(这是 Pascal 最标志性的语法)if...then...else: 条件判断case...of...else: 多路分支选择for: 计数循环while: 当型循环repeat...until: 直到型循环(先执行,后判断)goto: 无条件跳转
过程与函数
procedure: 定义过程(无返回值)function: 定义函数(有返回值)var: 声明局部变量const: 定义常量type: 定义类型(包括自定义类型)program: 程序的起始关键字uses: 引入单元(类似 C 的#include)result: 在函数中引用返回值
文件与 I/O 操作
read/readln: 从标准输入(键盘)读取数据write/writeln: 向标准输出(屏幕)写入数据assign: 将一个外部文件名与文件变量关联reset: 打开一个已存在的文件进行读操作rewrite: 创建一个新文件或覆盖旧文件,用于写操作close: 关闭文件
集合与指针
set: 定义集合类型pointer: 指针类型nil: 空指针常量new: 动态分配内存dispose: 释放动态分配的内存
其他
and: 逻辑与or: 逻辑或not: 逻辑非div: 整除运算符mod: 取模运算符to:for循环中的范围说明符(for i := 1 to 10 do)downto:for循环中的降序范围说明符
核心差异对比总结
| 特性 | C 语言 | Pascal |
|---|---|---|
| 代码块 | 使用 (花括号) 来界定代码块。 | 使用 begin 和 end 来界定代码块。 |
| 语句分隔 | 语句以 (分号) 后面的 是可选的。 | 语句以 (分号) end 后面的 是必须的。 |
| 条件语句 | if (condition) { ... } else { ... } |
if condition then ... else ... |
| 循环结构 | for (i=0; i<10; i++) { ... }while (condition) { ... }do { ... } while (condition); |
for i := 1 to 10 do ...while condition do ...repeat ... until condition; |
| 变量声明 | 可以在任何代码块前声明。 | 通常在代码块的 begin 之后,使用 var 关键字集中声明。 |
| 函数/过程 | 统称为“函数”,通过 void 关键字来区分是否有返回值。 |
明确分为 procedure (无返回值) 和 function (有返回值)。 |
| 头文件 | 使用 #include 来包含代码片段。 |
使用 uses 来引入“单元”(Unit),单元是独立的编译模块。 |
| 布尔类型 | 在 C89 中没有内置的布尔类型,通常用 0 和 1 代替,C99 引入了 _Bool 和 stdbool.h。 |
内置 Boolean 类型,值为 True 和 False。 |
| 常量定义 | 使用 const 关键字定义运行时常量。 |
使用 const 关键字或 const ... = ... 语法定义编译时常量。 |
| 强类型 | 相对弱,允许很多隐式类型转换,灵活性高但容易出错。 | 非常强,类型检查非常严格,几乎不允许隐式类型转换,安全性高。 |
示例对比
C 语言示例:
#include <stdio.h>
int main() {
int i;
for (i = 0; i < 5; i++) {
printf("Hello, C!\n");
}
return 0;
}
Pascal 示例:

(图片来源网络,侵删)
program HelloPascal;
uses Crt; // 引入单元,可能包含清屏等功能
var
i: Integer; // 变量声明
begin
for i := 1 to 5 do
begin
writeln('Hello, Pascal!');
end;
end.
通过对比,可以清晰地看到两种语言在语法结构和设计哲学上的不同,Pascal 更像一位严谨的“教师”,强制你遵循严格的规则;而 C 语言则像一位灵活的“工匠”,给予你更多的自由,但也要求你对自己的行为负责。
