gpt4 book ai didi

pascal - 在 Pascal 中使用 TYPE 关键字

转载 作者:行者123 更新时间:2023-12-02 14:53:22 25 4
gpt4 key购买 nike

我试图理解 pascal 中关键字 TYPE 的定义。我知道 C 中的 typedef 只是为类型提供了一个新名称(唉)。但据我所知,Pascal 中的 TYPE 并不是那样工作的。它将创建一个新的独特类型。

我试图搜索并创建一个简单示例来展示TYPE 的机制。我试图创建一个示例来创建一些类型和一个函数。之后,它每次将其中一种类型传递给该函数。它应该会失败,因为该函数应该只获取一种类型,这证明这些类型不仅仅是别名。由于我对 Pascal 语法缺乏了解,每次都失败了。

你能分享一个简单的小程序来证明TYPE的强大吗?

编辑:

我创建了以下示例:

program Check;
TYPE
Meters = Real; Seconds = Real;

VAR
m: Meters; s: Seconds;

Procedure PRINT_SEC(s: Seconds);
Begin
WriteLn(s, ' sec');
end;

Begin
PRINT_SEC(s);
PRINT_SEC(m);
end.

输出:

0.0000000000000000E+000 sec
0.0000000000000000E+000 sec

但为什么它不会失败呢?我传递了 m 类型 Meters 否?另外,如何初始化这些变量?

最佳答案

首先是一个小问题,在 Pascal 中,关键字 TYPE 不会创建类型。关键字 TYPE 必须出现在类型定义之前,但它是可以创建类型的类型定义。并非所有类型定义都会创建类型。

Pascal 标准规定如下:

A type-definition shall introduce an identifier to denote a type.

这意味着类型定义引入(即创建或重新定义)一个表示(即是别名)类型的标识符。

Pascal 标准将类型定义定义为:

type-definition = identifier '=' type-denoter

type-denoter = type-identifier | new-type

new-type = new-ordinal-type | new-structured-type | new-pointer-type

这意味着类型定义是一个标识符,后面跟着等号边,后面跟着一个类型指示符。类型指示符是类型标识符或新类型。

因此,类型标识符引入了一个标识符,该标识符表示(即,是另一个类型标识符或新类型的别名)。只有在类型指示器是新类型的情况下才会创建类型。

所以在你的例子中:

TYPE
Meters = Real; Seconds = Real;

两种类型定义中的类型指示符都是类型标识符 Real,因此 Meters 和 Seconds 都是 Real 的别名。

是的,在 Pascal 中,Real 不是类型,它是真实类型的内置类型标识符。

Pascal 标准说

The required type identifier real shall denote the real-type.

所以real实际上是一个类型标识符而不是类型。就好像,有一个看不见的类型定义。

TYPE
Real = real-type;

其中 real-type 是实际的真实类型。

关于pascal - 在 Pascal 中使用 TYPE 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54370680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com