当前位置: 首页 > 知识库问答 >
问题:

Pascal Script中的全局变量是否初始化为零?

松正阳
2023-03-14

当我在Inno Setup脚本的< code>[Code]部分(Pascal脚本)声明一个全局变量时,它是否自动初始化为零/空值?还是必须显式初始化它(例如在< code>InitializeSetup事件函数中)?

var
  GlobalNumber: Integer;

function InitializeSetup(): Boolean;
begin
  // Is this necessary?
  GlobalNumber := 0;

  Result := True;
end;

根据我的经验,变量是零初始化的。不过,我不确定我是否只是运气不好。

我已经完成了10.000次测试代码迭代。全局变量(或各种类型、整数、字符串、指针)始终为零初始化。

共有2个答案

濮阳祯
2023-03-14

全局变量总是零初始化,但对于局部变量来说,这是不正确的。

这一切都在文档中解释:https://www.freepascal.org/docs-html/ref/refse24.html

呼延子安
2023-03-14

变量在Pascal Script afaik中自动初始化。

我想我以前也在文档中的某个地方读过这篇文章,但我在文档中找不到明确的陈述。然而,如果您查看Pascal Script官方手册中的示例,变量也不总是在那里初始化的。例如,在本页的第一段代码中,字符串被添加到Messages中,而无需预先初始化。

 类似资料:
  • C++标准1998的一些相关摘录: 根据标准,静态初始化发生在动态初始化之前,动态初始化可能发生在输入之后。我的问题是:在输入之前,全局变量是否初始化为?然后,如果所有线程都是在输入之后创建的,则全局变量的静态初始化保证是线程安全的。

  • 我对python相当陌生,我想知道局部变量是如何工作的。让我们从一个简单方法的示例开始: 让我们假设local_dict像一种常量变量一样使用。这里有一个问题:它是在每次调用do_sth()时创建的,还是创建一次并保存在do_sth()内部的某个地方?

  • 场景2:我们希望横向扩展规则执行服务器。假设我们有一个公开REST-API的规则引擎服务器(kie-server)。我们是否可以在loadbalancer后面运行多个实例以使其水平伸缩?还有其他方法可以实现可伸缩性吗?

  • 问题内容: 我需要使用类似于php的isset函数的东西。我知道php和java截然不同,但是php是我先前类似编程知识的唯一基础。是否有某种方法可以返回一个布尔值,用于确定实例变量是否已初始化。例如… 到目前为止,我遇到了这个问题,当我的程序试图隐藏或删除尚未构造的对象时,出现运行时错误。 问题答案: 假设您对是否已为变量 明确赋值 感兴趣,答案是“不是真的”。但绝对的字段(实例变量或类变量)尚

  • 我已经检查过自己,我写了一个这样的程序 我运行了几次程序,结果始终是一样的,零。我在C中尝试过,结果是一样的。 但我的教科书说 如果未初始化函数内定义的变量,则该变量值将保持未定义状态。这意味着该元素具有以前驻留在内存中该位置的任何值。 当程序始终将可用内存位置分配给变量时,这怎么可能?它怎么可能是零以外的东西(我假设默认的可用内存值为零)?