gpt4 book ai didi

Pascal(免费或快速)阅读

转载 作者:行者123 更新时间:2023-12-01 22:03:47 27 4
gpt4 key购买 nike

我试图理解在 Linux 下以 Turbo 模式(特别是 fpc -Mtp -vw)编译的 Free Pascal 中看到的有点神奇的行为。代码来自 Jack Crenshaw 的“让我们构建一个编译器”,第 IV 部分,特别是包含 InputOutput 过程的最后一个版本,位于 http://www.pp4s.co.uk/main/tu-trans-comp-jc-04.html。 .我发现“神奇”的是 Input 过程中的 Read(Table[GetName]); 行。根据 FP 文档,“Read 从文件 F 中读取一个或多个值,并将结果存储在 V1、V2 等中;如果未指定文件 F,则读取标准输入。 “在 GetChar 过程中的 Read 中,它看起来很像 C 的 getchar(),即从标准输入缓冲区。在 Input 调用中,它反而表现得像一个复杂的 scanf(),自动跳过空白并将多位数字转换为整数,并且避免了对GetNum 函数,例如,如果您使用 ?i 345,它不会被调用,但如果您尝试 i=345,它会被调用, 如果你在 = 的两边留一个空格会导致解析错误。是否有一些其他文档可以证实 Free、Turbo 甚至通用 Pascal 的 Read 的明显多功能性?

最佳答案

Pascal 读、写例程很神奇。 IOW 它不是某个库中存在的真实函数,而是编译器生成一系列对运行时的调用。该系列包括 read、readln、write 和 writeln,以及扩展的 Pascal readstrwritestr这是读写的“来自字符串”版本。

调用会根据参数的类型而有所不同,如果它们有额外的参数(例如,写入采用 :x 整数格式值和 :x:y 实数格式值):

writeln(x:10:5); 

在 Free Pascal 中,与 Turbo Pascal 和 Delphi 不同,还公开了一些类似 RTTI 的功能,例如writeln() 枚举类型的变量,将枚举的值打印为标识符(字符串)。

错误处理和格式化有些限制,所以它们的使用随着问题的复杂程度而变化

根据您的观察,您的 getchar 之类的调用可能读取了一个 char 类型的变量,而另一个函数的类型不同。

关于Pascal(免费或快速)阅读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52940905/

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