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
| Old | New | Line | |
|---|---|---|---|
| 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).* |
