Sign in Join
Wiki copytemporary

Basic Pascal Tutorial/Chapter 1/Assignment and Operations/zh CN: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Basic Pascal Tutorial/Chapter 1/Assignment and Operations/zh CN

OldNewLine
1+1E - 赋值和运算符 (原作者: Tao Yue, 状态: 未更改)
2+
3+一旦你声明了一个变量,你就可以往里面存储值。这就叫做赋值。
4+
5+把一个值赋给一个变量的语法如下:
6+
7+``` pascal
8+variable_name := expression;
9+```
10+
11+注意,Pascal跟其它一些直接用等号作为赋值符号的语言不同,Pascal用冒号后面跟一个等号来表示赋值,这跟大多数计算机代数系统相似。
12+
13+上面的expression(表达式)既可以是单独一个值:
14+
15+``` pascal
16+some_real := 385.385837;
17+```
18+
19+也可以是一个算式:
20+
21+``` pascal
22+some_real := 37573.5 * 37593 + 385.8 / 367.1;
23+```
24+
25+Pascal中的数学运算符有:
26+
27+| 运算符 | 运算功能 | 操作数类型 | 结果类型 |
28+|--------|------------------|---------------|---------------|
29+| \+ | 加法或一元正号 | real或integer | real或integer |
30+| \- | 减法或一元负号 | real或integer | real或integer |
31+| * | 乘法 | real或integer | real或integer |
32+| / | 实数除法 | real或integer | real |
33+| div | 整除 | integer | integer |
34+| mod | 求模(除法取余) | integer | integer |
35+
36+**`div`**和**`mod`**只能用于*整数*。**`/`**对*实数*和*整数*都可以用,但是结果都是*real*类型的。其他的运算符都可以同时用于*实数*和*整数*。当出现*实数*和*整数*的混合运算时,结果都是*real*类型的,不然结果可能会丢失部分数据。这也是为什么Pascal要分别为普通除法和整数除法使用不同的运算符。`7 / 2 = 3.5` (real),但是`7 div 2 = 3`(作为余数,`7 mod 2 = 1`)。
37+
38+每个变量都只能被赋予同一类型的值。因此,你不能把一个real类型的值赋给一个integer类型的变量。然而,某些特定类型的值可以转换为更高的数据类型。最常见的就是把一个integer类型的值赋给一个real类型的变量。假设有下面的变量定义:
39+
40+``` pascal
41+var
42+ some_int : integer;
43+ some_real : real;
44+```
45+
46+执行下面的语句:
47+
48+``` pascal
49+some_int := 375;
50+some_real := some_int;
51+```
52+
53+`some_real`中存储的值将会是`375.0`
54+
55+把一种数据类型变为另外一种数据类型涉及到类型转换。现代Pascal编译器支持类似于C语言的显示类型转换,但语法稍微有些不同。不过类型转换通常用于低级别的操作或是面对对象编程,所以初学者不太需要用到。
56+
57+在Pascal语言中,减号可以用作负号,同样地加号也可以用作正号,但由于正号是默认的,所以一般不用写。
58+
59+不要把两个运算符挨着写:
60+
61+``` pascal
62+some_real := 37.5 * -2;
63+```
64+
65+你可能感觉直接这样乘以-2比较好,但是Pascal编译器就会搞不清楚到底该乘还是该减。你可以用圆括号来避免这种问题:
66+
67+``` pascal
68+some_real := 37.5 * (-2);
69+```
70+
71+计算机里的运算顺序和优先级跟数学中一样。乘法和除法(`* / div mod`)运算先于加法和减法(`+ -`),而括号总是最优先的。所以`3.5*(2+3)`的结果是`17.5.`。
72+
73+Pascal中不能对布尔类型的值做标准算术运算。布尔类型自己有一套特殊的运算。同样,你也不能对字符类型做算术运算。
74+
75+| | | |
76+|----|----|----|
77+| [[Basic Pascal Tutorial/Chapter 1/Variables and Data Types/zh CN|上一页]] | [[Basic Pascal Tutorial/Contents/zh CN|目录]] | [[Basic Pascal Tutorial/Chapter 1/Standard Functions/zh CN|下一页]] |
78+
79+---
80+*From the Free Pascal wiki, page "Basic Pascal Tutorial/Chapter 1/Assignment and Operations/zh CN", as it stood on 2022-08-20 after a change by Kai Burghardt, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history