错误、漏洞、问题 - 页 2209

 
Slava:

而且因为你的例子纯粹是理论上的。他们纯粹是为学生服务的。没有一个头脑正常的程序员会将这种东西投入生产。

后缀和前缀的增量 和减量实际上首先在循环中使用。而它们被称为增量和减量!

这里有一些例子

и

如果你声称前缀和后缀的操作都是一样的,那么手里有旗子,脖子上有鼓。

在前缀递增的情况下,你会得到一个未初始化的空数组元素,并且在最后一次迭代时出现数组超范围的错误。

也许你高高在上的思想不明白,我再重复一次我的问题。

а при чем тут array[++i]=i и array[i++]=i, как я могу сравнить то, чего не было в беседе...

突出显示的那条对你来说很难看到吗?

现在说重点,为什么在对话中出现的例子中,mql中的结果==12,也不管是不是凭空捏造的,当后缀和前缀操作有区别时,结果应该是==13

ps.我不是在发表声明,因为现在我检查了一下,确实后缀和前缀现在有区别,但我上面的问题让人有理由相信,语言在编译时的模糊性显然是足够的,在你扑向分支中的某人之前,处理好这些UB,我们在这里没有错。

顺便说一下,我看到帮助已经被修补过了))。

 
Konstantin:

也许你高高在上的思想不明白,我再重复一遍我的问题。

你不明白强调的部分?

现在说重点,为什么在对话中出现的例子中,mql中的结果==12,而且不管是不是凭空捏造的,如果后缀和前缀操作有区别,结果应该是==13

ps.我不是在发表声明,因为现在我检查了一下,确实后缀和前缀现在有区别,但我上面的问题让人有理由相信,语言在编译时的模糊性显然是足够的,在你扑向分支中的某人之前,处理好这些UB,我们在这里没有错。

顺便说一句,这些帮助看起来像是被铲了一圈)。

不要说风凉话。

谁说结果必须是13?同样,有副作用的结果高度依赖于优化。即使你不对这样的表达式进行优化,也会有一个实现的过程--变量的值在使用后或计算表达式后立即发生变化。哪种实施方式是正确的?

我们不打算处理UB,那是未定义的,并明确写道:"不要那样做。

帮助被复制到哪里了?我从1月18日的MetaEditor build 1755打开了MQL5的参考资料。它说的是同样的事情

重要 通知

int i=5
int k = i++ + +i;

当把上述表达式从一个编程环境转移到另一个环境时,可能会出现计算问题(例如,从Borland C++到MQL5)。一般来说,计算的顺序取决于编译器的实现。在实践中,有两种方法来实现后减法。

  1. 后减法(后增法)是在计算了整个表达式后应用于变量
  2. 后减法(后增法)是在操作时立即应用于变量

目前,MQL5中实现了第一种后退计算方式。但即使知道这个特点,也不建议尝试使用它。


你原来的说法是,后缀和前缀操作之间没有区别。不是有吗?

 
Slava:

不要轻率行事。

谁说结果必须是13?同样,有副作用的结果高度依赖于优化。即使你不对这样的表达式进行优化,也会有一个实现的过程--在你使用它之后或者在计算表达式之后,变量的值就会发生变化。哪种实施方式是正确的?

我们不打算处理UB,这就是为什么它没有被定义,我们明确说 "不要那样做"。

你在参考文献中去了哪里?我从1月18日的MetaEditor build 1755打开了MQL5的参考资料。它说的是同样的事情

重要 通知

int i=5
int k = i++ + +i;

当把上述表达式从一个编程环境转移到另一个环境时,可能会出现计算问题(例如,从Borland C++到MQL5)。一般来说,计算的顺序取决于编译器的实现。在实践中,有两种方法来实现后减法。

  1. 后减法(后增法)是在计算了整个表达式后应用于变量
  2. 后减法(后增法)是在操作时立即应用于变量

目前,MQL5中实现了第一种后退计算方式。但即使知道这个特点,也不建议尝试使用它。


你原来的说法是,后缀和前缀操作之间没有区别。难道不是这样吗?

我不是厚颜无耻,注意你开始对话的地方,即我不得不执行一个我甚至不知道的代码--超级

至于帮助--是的,这是一次大修,因为当我在处理(大约两年前)mql中的后缀和前缀操作时,我现在显然不记得这个材料了。

所以,这个话题已经结束了,我们引入了这种差异,并且做得很好,但你必须警告他们,你正在改变。

 
. ... Rick D. ... .:
请告知部分平仓 的情况,账户类型为RETAIL_HEDGING。例如,我在专家顾问中关闭了一半的头寸,一个较小手数的新订单应该自动打开。那么,在什么时候,新的订单才能保证进入终端?我的理解是否正确,它不一定要在PositionClosePartial之后立即出现,我们必须在OnTrade的某个地方抓住它?
让我试着回答我自己的问题。当调用PositionClosePartial时,平仓订单的票据将返回到CTrade::ResultOrder(),仓位票据保持不变,但仓位本身的手数将减少。让我们试着得出结论,调用PositionClosePartial导致在一个交易中同步减少头寸和改变订单历史。
 

那是什么鬼东西?

2018.05.15 12:50:04.594 Pred_Find (GBPUSD,M1)   Access violation at 0x000000013F1C4945 read to 0xFFFFFFFFFFFFFFFF
2018.05.15 12:50:04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48A0 48895 C2418        mov        [rsp+0x18], rbx
2018.05.15 12:50:04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48A5 48897 C2420        mov        [rsp+0x20], rdi
2018.05.15 12:50:04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48AA 4156              push       r14
2018.05.15 12:50:04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48AC 4883 EC20          sub        rsp, 0x20
2018.05.15 12:50:04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48B0 488 BDA            mov        rbx, rdx
2018.05.15 12:50:04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48B3 4 C8BF1            mov        r14, rcx
2018.05.15 12:50:04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48B6 4883 FA20          cmp        rdx, 0x20
2018.05.15 12:50:04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48BA 7307              jae        0x13f1c48c3
2018.05.15 12:50:04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48BC BB20000000        mov        ebx, 0x20
2018.05.15 12:50:04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48C1 EB13              jmp        0x13f1c48d6
2018.05.15 12:50:04.661 Pred_Find (GBPUSD,M1)   
2018.05.15 12:50:04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48C3 488 BCB            mov        rcx, rbx
2018.05.15 12:50:04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48C6 83 E107            and        ecx, 0x7
2018.05.15 12:50:04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48C9 740 B              jz         0x13f1c48d6
2018.05.15 12:50:04.661 Pred_Find (GBPUSD,M1)   
2018.05.15 12:50:04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48CB B808000000        mov        eax, 0x8
2018.05.15 12:50:04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48D0 482 BC1            sub        rax, rcx
2018.05.15 12:50:04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48D3 4803 D8            add        rbx, rax
2018.05.15 12:50:04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48D6 498 B4620          mov        rax, [r14+0x20]
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C48DA 33 FF              xor        edi, edi
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C48DC 4885 C0            test       rax, rax
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C48DF 0 F8485000000      jz         dword 0x13f1c496a
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)   
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C48E5 483 B58F8          cmp        rbx, [rax-0x8]
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C48E9 7616              jbe        0x13f1c4901
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)   
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C48EB 488 B5008          mov        rdx, [rax+0x8]
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C48EF 33 C0              xor        eax, eax
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C48F1 0 FB6CA            movzx      ecx, dl
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C48F4 4883 E2FC          and        rdx, 0xfc
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C48F8 80 E102            and        cl, 0x2
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C48FB 480 F44C2          cmovz      rax, rdx
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C48FF EB0E              jmp        0x13f1c490f
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)   
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4901 488 BF8            mov        rdi, rax
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4904 488 B00            mov        rax, [rax]
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4907 A802              test       al, 0x2
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4909 7509              jnz        0x13f1c4914
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)   
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C490B 4883 E0FC          and        rax, 0xfc
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C490F 4885 C0            test       rax, rax
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4912 75 D1              jnz        0x13f1c48e5
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)   
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4914 4885 FF            test       rdi, rdi
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4917 7451              jz         0x13f1c496a
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)   
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4919 488 BD7            mov        rdx, rdi
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C491C 498 D4E18          lea        rcx, [r14+0x18]
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4920 E89B0F0000        call       0x13f1c58c0  ; #5079 (terminal64.exe)
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4925 4 C8B47F8          mov        r8, [rdi-0x8]
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4929 4 C2BC3            sub        r8, rbx
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C492C 4983 F820          cmp        r8, 0x20
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4930 7224              jb         0x13f1c4956
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)   
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4932 4983 C0F8          add        r8, 0xf8
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4936 488 D5308          lea        rdx, [rbx+0x8]
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C493A 4803 D7            add        rdx, rdi
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C493D 498 D4E18          lea        rcx, [r14+0x18]
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4941 4 C8942F8          mov        [rdx-0x8], r8
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)      crash -->  000000013 F1C4945 4 D894410F8        mov        [r8+rdx-0x8], r8
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C494A 48895 FF8          mov        [rdi-0x8], rbx
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C494E 4 D8B4618          mov        r8, [r14+0x18]
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4952 41 FF5008          call       qword near [r8+0x8]
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4956 488 BC7            mov        rax, rdi
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4959 488 B5C2440        mov        rbx, [rsp+0x40]
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C495E 488 B7C2448        mov        rdi, [rsp+0x48]
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)   
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)   00: 0x000000013F1C4945
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)   01: 0x000000013F63EA90
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)   02: 0x00000000FFFFFFFF
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)   03: 0x000000005A3CD7A0
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)   04: 0x000000013F6303ED
2018.05.15 12:50:04.662 Pred_Find (GBPUSD,M1)   
 
Konstantin:

\on the help - yes, it has been heavily rehashed, because when I was dealing (about two years ago) with postfix and prefix operations in mql, I obviously do not remember this material now

总的来说,这个话题已经结束了,我们引入了这种差异,并且做得很好,但你必须提醒他们注意这些变化,不是吗?

为了感兴趣,我决定检查一下2015年6月的旧1159构建。它的帮助具有斯拉瓦引用的所有内容。所以,也许你弄错了什么。

 
Aleksey Vyazmikin:

那是什么鬼东西?

它是一个崩溃:)转到servicedesk!

 
Alexey Kozitsyn:

它是一个崩溃:)转到servicedesk!

拿到了--破费了不少钱 :)

 
Aleksey Vyazmikin:

我明白了--打破了银行 :)

它发生了)

 
Alexey Kozitsyn:

它发生了)

我不知道如何将这个错误本地化?我只是不想泄露整个剧本,也不想重新包装一切....。