新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 427

 
Artyom Trishkin:
并阅读一个静态变量被初始化的次数。而问题本身将因其荒谬性而消失;)

那么如何理解:用static关键字声明的局部变量在函数的生命周期内保留其值。每次函数被再次调用时,这些局部变量 就会包含它们在前一次调用时的值。在用户定义的函数中声明的变量不是局部的吗?

 
Alekseu Fedotov:

关于第二个问题。

如果第一个钩子没有抓住,第二个钩子就会抓住。

返回酒吧的开放时间。它将在整个酒吧里都是一样的。
 
novichok2018:

那么如何理解:用static关键字声明的局部变量在函数的生命周期内保留其值。每次函数被再次调用时,这些局部变量 就会包含它们在前一次调用时的值。在用户定义的函数中声明的变量不是一个局部变量吗?

修饰符static使它成为静态的,它被存储在内存中的静态变量,而不是局部的。
 
Artyom Trishkin:
返回酒吧的开放时间。它将在整个酒吧里都是一样的。

在这里得到了它。谢谢你。

 
Artyom Trishkin:
静态修饰符使它成为静态的,而且它已经存储在内存中的静态变量,而不是局部变量。

这就是我不明白的地方。在我看来,它存储在哪里并不重要,通过代码,我们在每次访问函数时将变量的值重置为零。为了什么?

 
novichok2018:

这就是我不明白的地方。在我看来,它存储在哪里并不重要,通过代码,我们在每次访问函数时将变量的值重置为零。为了什么?

对于第一次发射--当你宣布。之后,由你来控制其内容。
 
Artyom Trishkin:
对于第一次发射--在宣布。此外,你自己控制其内容。

然而,在我看来,这是不正确的:代码每次都是逐行读取的,每次都是打零,在第一次运行时,即使没有初始化,变量也会取一个空值。因此,静态数据线New_Time=0;迫使程序做不必要的工作。

 
novichok2018:

然而,在我看来,情况并非如此:代码每次都是逐行读取的,每次都是零,在第一次运行时,即使没有初始化,变量也会取一个零值。所以,静态的数据时间字符串New_Time=0;迫使程序做不必要的工作。

有人告诉你 "不",你说 "是"。
只要把变量的值打印到日记本上,然后观察。当人们向你解释最简单的事情时,你为什么要打架?
在你自己检查之前,你可以不用我继续下去。
 
Artyom Trishkin:
你说不,你说是......。
只要把变量的值打印到日志中,就可以看到。最简单的事情都向你解释了,为什么还要费心?
接下来,没有我,直到你自己检查。
你不需要被冒犯。但显然,程序员阅读文本的方式不同。我一直认为,如果程序中说 "等于零",计算机就必须等于零,不管是在启动时还是在重复引用某一行代码时。而且不需要访问任何期刊来证明零初始化 是不必要的,你只需要删除它:static datetime New_Time; 与static datetime New_Time=0产生的结果绝对相同;我不知道程序运行的速度有多快,我承认,这一点都不显著,但还是删除了 "不必要的姿态"。
 
novichok2018:
不要被冒犯。但程序员显然以不同的方式阅读文本。我一直认为,如果在程序中说 "等于零",那么不管是在启动时还是在反复引用代码行时,计算机必须等于零。而且不需要访问任何期刊来证明零初始化是不必要的,你只需要删除它:static datetime New_Time; 与static datetime New_Time=0产生的结果绝对相同;我不知道程序的运行速度有多快,我承认这根本不重要,但它仍然删除了 "不必要的姿态"。
我并没有因为固执而感到不快。为什么?
而变量则需要明确地进行初始化。你会在某一天了解到初始化的重要性。同时,你可以扔掉大括号里的所有东西。
原因: