                       第二章 Lpc的数据类型。 
 
                           第一节 序言 
 
  Lpc的Object是由零个或更多一些的被一个或一个以上函数操纵 
控制的变量组成的。在代码中函数排列的顺序是不影响Object的特 
性，但是影响代码的可读性。当你写的那个Object被第一次调用时， 
Driver将你写的代码装入内存。当每一个Object被调入内存时，所 
有的变量是没有值的。create()这个函数被调用来初始化Object的 
值。create()这个函数在Object装入内存后立即被调用。在你读本 
文时可能对编程一无所知，你可能不知道什么是函数以及它是怎么 
调用的；或许你有了一些编程的经验，你可能对一个新创建的Object 
的函数相互调用过程是怎样开始感到迷惑。在这些困惑得到解决之 
前，你更有必要了解的是这些函数操纵控制的到底是什么东西。所 
以你最好先来读读这一章：Lpc的数据类型。可以这么说，几乎90％ 
的错误（包括丢失{}和()）是由于错误的使用Lpc的数据类型。我认 
为真正理解这一章能帮助你更容易的编程。 
 
                    第二节 让计算机理解你 
2.1 计算机语言 
  众所周知的计算机懂得的语言实际上由“0”和“1”组成的机器 
码。计算机根本不懂得人类的自然语言，实际上它也不懂得我们使 
用的高级语言，比如BASIC，C，C++，Pascal等等。这些高级语言 
能让我们更容易的实现我们的想法。但是这些高级语言最终都要被 
翻译成“0”和“1”组成的计算机语言。 
  有两种方法能把高级语言翻译成计算机语言：编译和解释。编译 
类的在程序写完之后用一个编译器将其翻译成计算机语言。编译在 
程序执行之前就完成了。解释类的翻译的过程在程序执行时进行。 
由于解释类的语言程序是边执行边解释，所以一般都要比编译编译 
执行的慢。 
  不管是哪种语言，他们最终都要被翻译成0和1。但是变量，那些 
你存在内存里面的变量，却不可能只是0和1。 
所以你必须有一种你 
使用的那种编程语言里面的方法来告诉计算机这些0和1应该被当做 
整数还是字符，或者是字符串，或者别的什么东西。这样就必须使 
用到数据类型。 
 
2.2 数据类型 
  一个简单的例子：你现在有了一个变量，你把它叫做‘x’并且 
赋予它一个十进制整数值65。在Lpc你可以这样的语句来做这件事： 
 
------ 
x = 65; 
------ 
 
接着你可以做象下面这样的事： 
 
----- 
write(x + "\n"); 
y = x + 5; 
----- 
第一行把65和字母"a"输出到屏幕上 
第二行把70这个值赋于变量y 
对计算机来说有个问题:它不知道你所说的 x = 65;中的65什么意思. 
你认为是65,但是计算机可能认为是: 
00000000000000000000000001000001 
但是,对计算机来说,字母'A'也是被当做: 
00000000000000000000000001000001 
所以,当你想让计算机明白 write( x + "\n" );, 它必须有一种方法 
知道你想看到的是65而不是'A'. 
  计算机就是通过数据类型来区分65和'A'. 一种数据类型简单的说就 
是在内存的某处, 那里代表了或者说指向某个给定的变量, 这些内存 
储存的数据是什么类型的. 每个LPC的变量都必须有它对应的变量类型. 
在上面给的例子, 本应在那些代码之前有下面一行: 
 
----- 
int x; 
---- 
 
这一行告诉Driver x应该指向什么类型的值, 它应该被当做数据类型'int' 
来使用. 'int' 是一个32位的整数. 到这里, 你应该有数据类型的基本 
印象, 以及为什么必须有数据类型. 他们可以让Driver知道计算机存在 
内存里面的'0'和'1'到底是什么东西. 
2.3 Lpc的数据类型 
 
  所有的LpMud的Driver都会有以下的数据类型： 
 
void, int, string, object, mixed, int *, string *, 
object *, mixed * 
 
  大多数的Driver都会有下面这些重要的数据类型： 
 
float, mapping, float *, mapping * 
 
  有一些Driver同时还支持下面这些数据类型： 
 
function, struct, class, char 
 
  特别的有MudOS支持的数据类型：(以v22pre8为例) 
 
void, int, string, object, float, mapping, function, 
class, mixed, int *, string *, object *, float *, 
mapping *, function *, class *, mixed * 

