Erros, bugs, perguntas - página 2209
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
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....