E porque os seus exemplos são puramente teóricos. São puramente para estudantes. Nenhum programador no seu perfeito juízo colocaria tais coisas em produção.
Os incrementos e decretos de prefixos e de prefixos são de facto utilizados em primeiro lugar em loops. E são chamados de incrementos e decretos!
Aqui estão alguns exemplos
и
Se reivindicar que as operações de prefixo e postfixação funcionam da mesma forma, então faça uma bandeira na mão e um tambor no pescoço.
No caso de incremento de prefixo, obterá um elemento de matriz nula não-inicializado e um erro de matriz fora do intervalo na última iteração.
Talvez a sua mente elevada não o perceba, vou repetir a minha pergunta mais uma vez.
а при чем тут array[++i]=i и array[i++]=i, как я могу сравнить то, чего не было в беседе...
O destacado é-lhe difícil de ver?
Passando agora à questão, porque é que no exemplo que aparece na conversa, o resultado em mql == 12 e não importa se foi feito à mão ou não, quando há uma diferença nas operações postfix e prefixo, o resultado deve ser == 13
ps. e eu não estou a fazer uma declaração, porque agora eu verifiquei e realmente faço postfix e prefixo agora têm uma diferença, mas a minha pergunta acima dá razões para acreditar que as ambiguidades na linguagem em tempo de compilação aparentemente suficiente e antes de você pular sobre alguém no ramo, lidar com estes UB, não estamos em falta aqui
Talvez a sua mente elevada não perceba, vou repetir a minha pergunta novamente.
não compreende a parte destacada?
Passando agora à questão, porque no exemplo, que aparece na conversa, o resultado em mql == 12 e não importa se foi feito à mão ou não, se há uma diferença nas operações postfix e prefixo, o resultado deve ser == 13
ps. e eu não estou a fazer uma declaração, porque agora eu verifiquei e realmente faço postfix e prefixo agora têm uma diferença, mas a minha pergunta acima dá razões para acreditar que as ambiguidades na linguagem em tempo de compilação aparentemente suficiente e antes de você pular sobre alguém no ramo, lidar com estes UB, não estamos em falta aqui
A propósito, a ajuda parece ter sido empurrada por aí).
Não seja ranhoso.
Quem diz que os resultados têm de ser 13? Mais uma vez, os resultados com efeitos secundários são altamente dependentes da optimização. Mesmo que não se aplique optimização a tal expressão, entra em jogo uma implementação - uma alteração no valor da variável imediatamente após a sua utilização ou após o cálculo da expressão. Qual é a implementação correcta?
Não vamos lidar com a UB, isso é indefinido, e escreveu claramente: "Não faças isso.
Onde foi copiada a ajuda? Abri a referência MQL5 do MetaEditor build 1755 datado de 18 de Janeiro. Diz a mesma coisa
Podem ocorrer problemas computacionais ao mover a expressão acima de um ambiente de programação para outro (por exemplo, de Borland C++ para MQL5). Em geral, a ordem dos cálculos depende da implementação do compilador. Na prática, há duas maneiras de implementar a pós-decremento:
O pós-decremento (pós-incremento) é aplicado à variável após o cálculo de toda a expressão.
O pós-decremento (pós-incrementação) é aplicado à variável imediatamente na operação.
Actualmente, a primeira forma de cálculo pós-decremento é implementada na MQL5. Mas mesmo conhecendo esta peculiaridade, não se recomenda a experimentação da sua utilização.
A sua afirmação original era que não há diferença entre as operações postfix e prefixo. Não há?
Quem diz que os resultados têm de ser 13? Mais uma vez, os resultados com efeitos secundários são altamente dependentes da optimização. Mesmo que não se aplique optimização a tal expressão, entra em jogo uma implementação - uma alteração no valor da variável logo após a sua utilização ou após o cálculo da expressão. Qual é a implementação correcta?
Não vamos lidar com a UB, é por isso que é indefinida, e dissemos explicitamente "não faças isso".
Para onde foi na referência? Abri a referência MQL5 do MetaEditor build 1755 datado de 18 de Janeiro. Diz a mesma coisa
Podem ocorrer problemas computacionais ao mover a expressão acima de um ambiente de programação para outro (por exemplo, de Borland C++ para MQL5). Em geral, a ordem dos cálculos depende da implementação do compilador. Na prática, há duas maneiras de implementar a pós-decremento:
O pós-decremento (pós-incremento) é aplicado à variável após o cálculo de toda a expressão.
O pós-decremento (pós-incrementação) é aplicado à variável imediatamente na operação.
Actualmente, a primeira forma de cálculo pós-decremento é implementada na MQL5. Mas mesmo conhecendo esta peculiaridade, não se recomenda a experimentação da sua utilização.
A sua afirmação original era que não há diferença entre as operações postfix e prefixo. Não é assim?
Não estou a ser atrevido, note onde começou o diálogo, ou seja, tive de executar um código que eu nem sequer conhecia - super
quanto à ajuda - sim, foi reformulada porque quando estava a lidar (há cerca de dois anos atrás) com operações postfix e prefixos em mql, obviamente não me lembro agora deste material
portanto, o assunto foi encerrado, e introduzimos esta diferença e fizemo-lo bem, mas é preciso avisá-los de que se está a mudar
. ... Rick D. ... .: Aconselhar sobre fecho parcial de posição, tipo de conta RETAIL_HEDGING. Por exemplo, fecho metade de uma posição no Expert Advisor e uma nova encomenda com um lote mais pequeno deve abrir automaticamente. Então, em que altura é garantido que a nova encomenda está no terminal? Compreendo correctamente que não tem de aparecer imediatamente após o PositionClosePartial e que temos de o apanhar algures na OnTrade?
Deixem-me tentar responder à minha própria pergunta. Ao chamar o PositionClosePartial, o bilhete de uma ordem fechada voltará ao CTrade::ResultOrder(), e o bilhete de posição permanece o mesmo, mas a posição em si terá um lote menor. Vamos tentar concluir que a chamada de PositionClosePartial leva a uma diminuição síncrona da posição e alteração do histórico da ordem numa única transacção.
\na ajuda - sim, foi fortemente reformulada, porque quando estava a lidar (há cerca de dois anos) com operações postfix e prefixos em mql, obviamente não me lembro agora deste material
em geral, o tema foi encerrado, e introduzimos esta diferença e fizemo-lo bem, mas tem de os avisar sobre as mudanças, não é verdade?
Por uma questão de interesse, decidi verificar a antiga construção do 1159 a partir de Junho de 2015. A sua ajuda tem tudo o que Slava citou. Por isso, talvez se tenha confundido algo.
E porque os seus exemplos são puramente teóricos. São puramente para estudantes. Nenhum programador no seu perfeito juízo colocaria tais coisas em produção.
Os incrementos e decretos de prefixos e de prefixos são de facto utilizados em primeiro lugar em loops. E são chamados de incrementos e decretos!
Aqui estão alguns exemplos
и
Se reivindicar que as operações de prefixo e postfixação funcionam da mesma forma, então faça uma bandeira na mão e um tambor no pescoço.
No caso de incremento de prefixo, obterá um elemento de matriz nula não-inicializado e um erro de matriz fora do intervalo na última iteração.
Talvez a sua mente elevada não o perceba, vou repetir a minha pergunta mais uma vez.
O destacado é-lhe difícil de ver?
Passando agora à questão, porque é que no exemplo que aparece na conversa, o resultado em mql == 12 e não importa se foi feito à mão ou não, quando há uma diferença nas operações postfix e prefixo, o resultado deve ser == 13
ps. e eu não estou a fazer uma declaração, porque agora eu verifiquei e realmente faço postfix e prefixo agora têm uma diferença, mas a minha pergunta acima dá razões para acreditar que as ambiguidades na linguagem em tempo de compilação aparentemente suficiente e antes de você pular sobre alguém no ramo, lidar com estes UB, não estamos em falta aqui
A propósito, vejo que a ajuda já foi mexida)).
Talvez a sua mente elevada não perceba, vou repetir a minha pergunta novamente.
não compreende a parte destacada?
Passando agora à questão, porque no exemplo, que aparece na conversa, o resultado em mql == 12 e não importa se foi feito à mão ou não, se há uma diferença nas operações postfix e prefixo, o resultado deve ser == 13
ps. e eu não estou a fazer uma declaração, porque agora eu verifiquei e realmente faço postfix e prefixo agora têm uma diferença, mas a minha pergunta acima dá razões para acreditar que as ambiguidades na linguagem em tempo de compilação aparentemente suficiente e antes de você pular sobre alguém no ramo, lidar com estes UB, não estamos em falta aqui
A propósito, a ajuda parece ter sido empurrada por aí).
Não seja ranhoso.
Quem diz que os resultados têm de ser 13? Mais uma vez, os resultados com efeitos secundários são altamente dependentes da optimização. Mesmo que não se aplique optimização a tal expressão, entra em jogo uma implementação - uma alteração no valor da variável imediatamente após a sua utilização ou após o cálculo da expressão. Qual é a implementação correcta?
Não vamos lidar com a UB, isso é indefinido, e escreveu claramente: "Não faças isso.
Onde foi copiada a ajuda? Abri a referência MQL5 do MetaEditor build 1755 datado de 18 de Janeiro. Diz a mesma coisa
Avisoimportante
int i=5;
int k = i++ + + ++i;
Podem ocorrer problemas computacionais ao mover a expressão acima de um ambiente de programação para outro (por exemplo, de Borland C++ para MQL5). Em geral, a ordem dos cálculos depende da implementação do compilador. Na prática, há duas maneiras de implementar a pós-decremento:
Actualmente, a primeira forma de cálculo pós-decremento é implementada na MQL5. Mas mesmo conhecendo esta peculiaridade, não se recomenda a experimentação da sua utilização.
A sua afirmação original era que não há diferença entre as operações postfix e prefixo. Não há?
Não seja petulante.
Quem diz que os resultados têm de ser 13? Mais uma vez, os resultados com efeitos secundários são altamente dependentes da optimização. Mesmo que não se aplique optimização a tal expressão, entra em jogo uma implementação - uma alteração no valor da variável logo após a sua utilização ou após o cálculo da expressão. Qual é a implementação correcta?
Não vamos lidar com a UB, é por isso que é indefinida, e dissemos explicitamente "não faças isso".
Para onde foi na referência? Abri a referência MQL5 do MetaEditor build 1755 datado de 18 de Janeiro. Diz a mesma coisa
Avisoimportante
int i=5;
int k = i++ + + ++i;
Podem ocorrer problemas computacionais ao mover a expressão acima de um ambiente de programação para outro (por exemplo, de Borland C++ para MQL5). Em geral, a ordem dos cálculos depende da implementação do compilador. Na prática, há duas maneiras de implementar a pós-decremento:
Actualmente, a primeira forma de cálculo pós-decremento é implementada na MQL5. Mas mesmo conhecendo esta peculiaridade, não se recomenda a experimentação da sua utilização.
A sua afirmação original era que não há diferença entre as operações postfix e prefixo. Não é assim?
Não estou a ser atrevido, note onde começou o diálogo, ou seja, tive de executar um código que eu nem sequer conhecia - super
quanto à ajuda - sim, foi reformulada porque quando estava a lidar (há cerca de dois anos atrás) com operações postfix e prefixos em mql, obviamente não me lembro agora deste material
portanto, o assunto foi encerrado, e introduzimos esta diferença e fizemo-lo bem, mas é preciso avisá-los de que se está a mudar
Aconselhar sobre fecho parcial de posição, tipo de conta RETAIL_HEDGING. Por exemplo, fecho metade de uma posição no Expert Advisor e uma nova encomenda com um lote mais pequeno deve abrir automaticamente. Então, em que altura é garantido que a nova encomenda está no terminal? Compreendo correctamente que não tem de aparecer imediatamente após o PositionClosePartial e que temos de o apanhar algures na OnTrade?
Que diabos é isso?
\na ajuda - sim, foi fortemente reformulada, porque quando estava a lidar (há cerca de dois anos) com operações postfix e prefixos em mql, obviamente não me lembro agora deste material
em geral, o tema foi encerrado, e introduzimos esta diferença e fizemo-lo bem, mas tem de os avisar sobre as mudanças, não é verdade?
Por uma questão de interesse, decidi verificar a antiga construção do 1159 a partir de Junho de 2015. A sua ajuda tem tudo o que Slava citou. Por isso, talvez se tenha confundido algo.
Que diabos é isso?
É um acidente:) Vá para Servicedesk!
É um acidente:) Vá para Servicedesk!
Já está - partiu o banco :)
Estou a ver - partiu o banco :)
Acontece)
Acontece)
Não sei como localizar este erro? Só não quero dar o guião inteiro, e não quero reembalar tudo....