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
estas são as suas palavras, não há avisos, mas há realmente
Em que mundo vive, o que fuma, o que partilha
Então afirma-me com tanta ousadia sobre o meu código que não vê? Não está enganado sobre os cogumelos?
Eu tenho-o, não um tolo, tem um compilador especial sem avisos, especialmente pessoalmente da MQ
PS: Eu também quero um, dá-mo a mim.
O código que deu não é de todo correcto!
Deveria ser assim:
Errado, porque depois há uma comparação:
Não, não é.
Isto não tem nada a ver com o assunto.
O code-escritor exagerou ou copiou a conversão do tipo a partir de algum lugar.
de facto
código
não gera qualquer erro ou aviso.
A MQL não requer uma conversão explícita
PS. Teste os seus pressupostos antes de começar a discutir.
um péssimo exemplo, escorrega-se numa comparação e depois depara-se com um erro:
PS. Teste os seus pressupostos antes de começar a discutir.
Não, não está.
Não tem nada a ver com isto.
O co-escritor exagerou ou copiou de algum outro lugar.
de facto
código
não gera qualquer erro ou aviso.
MQL não requer conversão explícita
PS. Teste os seus pressupostos antes de começar a discutir.
o_o!
Certo - errado....
Tenho a impressão de que não se lê o que os outros escrevem!
De acordo com as regras de programação:
A VARIÁVEL DE FUNÇÃO DE ACEITAÇÃO DEVE SER DO MESMO TIPO QUE O VALOR DE RETORNO DESTA FUNÇÃO!
É O QUE É!
Este é o fim desta especulação.
Porque não o escreveu desta forma?
Porque sabe que a função retorna sempre LONG.
E a referência diz claramente queo valor retornado para o argumento POSITION_TYPE da funçãoPositionGetInteger() é
é ENUM_POSITION_TYPE, não LONGO
E se quiser praticar fundição do tipo, escreva-o desta forma:
O facto de o compilador não lhe dar um erro não significa que o tenha escrito correctamente!
Indica o "livre arbítrio" do compilador e é tudo! (Permite-lhe comparar LONG e INTEGER).
Esta é a forma DIREITA de lidar com esta situação:
Um péssimo exemplo, falhou a comparação, e depois receberá um erro:
Não justifique as suas teses com a referência a um assunto diferente da discussão.
Trata-se apenas de uma comparação e só neste caso é enumeração longa.
Já entrou na espessura dos pensamentos, embora a pergunta fosse directa, a qual foi respondida por um número inteiro
Nextor257:
Por favor aconselhe-me, não consigo entender que tipo de comparação é esta?
if(type===(long)POSITION_TYPE_BUY)
Porque é (há muito) precedido por POSITION_TYPE_BUY ?
Esta é uma mudança do tipo de variável na mosca.
longo e solitário em vez deENUM_POSITION_TYPE eENUM_POSITION_TYPE
8 caracteres (que pode escrever com os olhos fechados) em vez de 36 caracteres (e em maiúsculas)! Além disso, há todo o tipo de informação que não faz sentido. Isto não é um bom estilo de programação - escrita desnecessária e informação redundante.
Neste caso, Mikhail tem toda a razão (com todo o meu desgosto pelo estilo de programação de Mikhail).
E não se trata de potenciais avisos e, além disso, do número de caracteres, mas sim de dactilografia rigorosa. A enumeração ENUM_POSITION_TYPE é um tipo de dados único. É ENUM_POSITION_TYPE, não longo ou int. Deve utilizá-lo como ENUM_POSITION_TYPE e de nenhuma outra forma. E se digitar longo, a função auto-completar começará no terceiro carácter, e não há qualquer problema. E o problema está no uso longo, porque pode ser quase tudo, enquanto que ENUM_POSITION_TYPE não é.
A MQL não requer uma conversão explícita
No início escrevi que sim, mas depois vi a palavra "comparação". Na verdade, nenhuma conversão explícita é necessária em comparação, porque a MQL fá-lo implicitamente. E é melhor não o fazer de todo, porque o resultado é muitas vezes indefinido. Mas em outras línguas normais estritamente tipificadas é sempre necessária uma conversão de tipo explícita.
P.S. Por uma vez Michael deu uma resposta competente, mas também aqui as pessoas começaram a deitá-lo fora, como de costume. E em vão, porque ele tem razão neste caso.