一个真正惊人的结果!!!。 - 页 6

 
Reshetov писал(а)>>

克莱夫-辛克莱尔曾经开发了廉价的ZX-Spectrum个人电脑。在第一个版本被大量卖出后,人们发现开发商在ROM中存在大量的错误。所以他们做出了一个决定,记录这些错误,而不是修复它们,使其与以前的版本完全兼容。而这个决定被证明是正确的,因为这些错误后来被用来保护这台电脑的软件不被破解。


我相信这个线程中描述的错误也可以保留并用于保护Expert Advisors,即从逻辑的角度插入一个不正确的条件,例如,用于检查到期日。而让那些反编译的人发疯吧。

我希望对这一错误的讨论能促使MQL5的开发者修复它。无论如何,我将不得不用MQL5重写所有程序。

 
nen >> :

对这个错误的讨论,希望能激发MQL5的开发者来修复它。无论如何,我将不得不用MQL5重写所有程序。

证明这是一个错误的证据,让我们来看看!

实际上是一种相反的说法。


布尔代数的基本规律

如果分配给两个布尔代数公式的函数是相等的(即它们在所有的参数值集合上取相同的值),那么这两个公式就是等价的。下面是布尔代数的基本定律,允许布尔代数公式的相同转换(注意它们与经典算术的定律是多么相似)。

  1. 双重否定定律:非x=x
  2. 换位法则(结果不因参数的互换而改变)。
    x 1 或 x 2 = x 2 或 x 1
    x 1 和 x 2 = x 2 和 x 1

  3. 关联性法则(计算的顺序)
    x 1或(x 2或x 3 )=(x 1或x 2)或x 3
    x 1和(x 2和x 3 )=(x 1和x 2)和x 3

  4. 分布性法则(打开括号)。
    x 1或(x 2和x 3 )=(x 1或x 2 )和(x 1或x 3 )
    x 1和(x 2或x 3 )=(x 1和x 2 )或(x 1和x 3
    )。
  5. ...

由此可见,从布尔代数的角度来看,操作或和具有相同的优先级。

 
这不是一个错误。这是个该死的错误。
 
TheXpert писал(а)>>

分布律(开括号):
x 1或(x 2和x 3)=(x 1或x 2)和(x 1或x 3)
x 1和(x 2或x 3)=(x 1和x 2)或(
x 1和x 3)。

由此可见,从布尔代数 的角度来看,操作和和具有相同的优先级

不要斤斤计较。你的例子与开始讨论的那个例子不同。仔细看一下。

 
keekkenen писал(а)>>

实际上,这不是 一个程序员的课题,因为每一种语言的规范都是第一位的,如果在某个地方有其他的标准也无所谓......。

和一个单一的标准是一个白日梦,你知道。

我认为这是最充分的想法。

每种语言都有自己的标准。例如,C++和Pascal有不同的整数计算规则。在一些语言中,索引从0开始,而在另一些语言中则从1开始。我认为这一点都不重要。

重要的是对自然规律的曲解,即那些人类无法控制的规律。而人类创造的规则和法律是其创造者的特权。 在这种情况下,法律的颁布才是最重要的;在这种情况下,规则的公布才是最重要的。

让我们更好地专注于应用领域:)

 

先生们,在这个主题的第二页,我给出了一个链接,并引用了文件中的一句话--优先权和行动顺序。我将以浓缩的形式再次介绍。

注意: MQL4中操作的优先级与C语言略有不同。


因此,说是bug是不正确的。

 

我想起了扎多诺夫的幽默 "什么是二加二乘二"。很好地说明了关于优先权的宗教辩论。而且一般来说,这个话题是有胡子的,你可以使用网站搜索--而不是创建一个新的主题。

P.S. Eh,MuruFigi 这个敌人,你为什么要陷害Pak ...

 
Mathemat писал(а)>>

这个话题有胡子,你可以用网站搜索而不是创建一个新的主题。

该主题将继续具有相关性。开发商似乎很喜欢它。

下一个 "新手 "程序员会用头撞向这个主题......而一切都会重复(嘻嘻)。

而且它不是凭空出现的。

开发人员决定以他们自己的方式重新培训每个人......

这将是一个永恒的主题...直到电话的另一端厌倦了....坚守

 
Mathemat писал(а)>>

关于优先权的宗教辩论

这里有一个倾斜产品的传统,制造它的人的手长出了%,但每个人都保持沉默,因为没有其他......或者有,但最好不要))

..

一个 "我自己 "的简单例子,当使用if() 时经常出现一个错误--当结合&&和一系列条件>/</!=时,这非常奇怪。

你复制Comment()链进行审查--1,1,1,1,等等--一切正常,但if() 不 "工作",你做了一个 "楼梯 "if() { if() { if() { ...}}}

一切都在运行......我认为是元编译器的故障,......还有什么,开发者认为他们会受制于人而被证明,......嘿嘿。

[删除]  
Rosh писал(а)>>

先生们,在这个主题的第二页,我给出了一个链接,并引用了文件中的一句话--优先权和行动顺序。我将以浓缩的形式再次介绍。

注意: MQL4中操作的优先级与C语言中略有不同。

因此,说是bug是不正确的。

好吧,我在第二页有点同意,如果是这样的话,我们不应该说是编译器的错误,而应该说是开发人员思想的错误。无意冒犯,我做这个主题是为了好玩。

我现在不明白的是这个。

MQL编译器是在什么基础上开发的?如果它是用普通语言开发的,那么程序员一定是被乘法和加法运算具有同等优先权的事实所吓坏了。他们怎么可能错过呢?真的每个人都把括号放在他们想要的地方和不想要的地方吗?顺便说一下,太多的括号也会使代码更清晰。当你的程序员写算术运算如2+3*4时,他们也会写2+(3*4),或者上帝保佑,一个错误可能会溜进C++编译器,在一个表达式中嵌套100个括号手动计算:)