Discussão do artigo "Aprendendo MQL5 do iniciante ao profissional (Parte II): Tipos de dados básicos e uso de variáveis" - página 2
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
Ahem... Tenho vergonha de perguntar, mas preciso....
Em resumo, por que um neófito precisa de um conhecimento tão profundo de literais?
P.S. Pessoalmente, embora não seja um neófito, fui reprovado em seu teste sem responder corretamente a uma única pergunta. Conheci algo semelhante em livros didáticos - em Java ou PHP - mas isso foi há muito tempo e não corresponde ao código prático que tive de ler ou escrever até agora... Não vou ser um juninho em seu escritório. E... o quê?
P.P.S. Acho que se você escrever um artigo sobre literais, ele poderá ser útil não apenas para mim. ;-) Especialmente se você compartilhar sua experiência, que não está na ajuda.... No entanto, os recursos não documentados geralmente me deixam muito constrangido, porque eles mudam com muita frequência nas novas versões, mas nunca se sabe.... Talvez ele seja realmente importante ou, pelo menos, útil?
Veja. A questão não é a frequência com que isso acontece, mas o fato de as pessoas não conhecerem e não quererem conhecer as sutilezas. E sobre trazer os tipos, você precisa saber disso porque é a base dos fundamentos. Você aprende muito com isso. A propósito, esse código não se refere à conversão de tipos, mas é para você pensar a respeito:
Portanto, com base na ajuda, está tudo bem aqui. Só que, para mim, há uma nuance. De acordo com as alegações dos desenvolvedores, o mql foi escrito em C++, e em C++ não é possível fazer isso, é UB, mas em C tudo é legal. Já vi esse tipo de código em pluses com frequência e, sim, ele funcionou e funciona, mas, pessoalmente, tenho medo de escrever dessa forma, mas não sei se os desenvolvedores do mql têm medo. É por isso que nunca farei isso no mql, porque não conheço a implementação.
De acordo com as alegações dos desenvolvedores, o mql é escrito em C++, e em C++ não é possível fazer isso, é UB, mas em C tudo é legal.
Sinto muito, mas os desenvolvedores afirmam que a linguagem de programação MQL é a mais próxima possível do C++ e não escrita nele. ))
Saudações, Vladimir.
E sobre a conversão de tipos, você precisa conhecê-la, pois ela é a base do básico.
E não vou nem tentar discutir sobre isso. Concordo plenamente. É só que... Bem, nem todas as construções em C são igualmente úteis em MQL! :-)
Com relação ao código "to think about"... Como não estou familiarizado com C (ambos), esse código parece um jogo para mim. Na ajuda, o tipo de enum é referido a tipos inteiros, e eu nem sequer pensei que se tratava de uma estrutura. Seu significado é bem diferente... Mas obrigado, agora vou saber - embora não seja útil para mim pessoalmente, não vou usá-lo de forma alguma :-).
Portanto, com base na ajuda, tudo está normal aqui.
Posso obter um link?
Com relação ao código "to think about"... Como não estou familiarizado com C (ambos), esse código parece um jogo para mim. Na ajuda, o tipo enum é referido a tipos inteiros, e eu nem sequer pensei que fosse uma estrutura. Seu significado é bem diferente... Mas obrigado, agora eu sei - embora não seja útil para mim pessoalmente, não usarei tal coisa :-).
O jogo é o seguinte. Uma pessoa deve ter escrito do teto e misturado enum e union. Seu exemplo não compila. Enum não é uma estrutura, mas um número inteiro de 4 bytes. Se você usar a união, ela funcionará perfeitamente bem em C++ e MQL.
PS. Com relação ao primeiro exemplo da entrevista de Jun e à pergunta sobre a frequência com que isso acontece - é claro que não acontece de forma pura, porque o exemplo é refinado, mas com muita frequência inteiros assinados e não assinados são usados no código misturados, e é bem provável que ocorram problemas nesse caso.Isso é um absurdo. A pessoa deve ter escrito do teto e misturado enum e union. Seu exemplo não compila. Enum não é uma estrutura, mas um número inteiro de 4 bytes. Se você usar a união, ela funcionará perfeitamente bem em C++ e MQL.
PS. Com relação ao primeiro exemplo da entrevista de Jun e à pergunta sobre a frequência com que isso acontece, é claro que não acontece em sua forma pura, porque o exemplo é refinado, mas com muita frequência inteiros assinados e não assinados são usados no código misturados, e é bem provável que haja problemas.Naturalmente union)))))
Sobre o restante: https: //en.cppreference.com/w/cpp/language/union
E sim, eu sei o que ele diz a seguir
Exceto que o msvs, de cuja ajuda ele foi retirado, não reivindica o segundo, embora ninguém tenha se deparado com ele ainda. O g++ e o clang não analisaram o que eles dizem sobre isso, mas não é muito diferente.
Se você quiser usá-lo dessa forma, use-o - é seu direito e sua dor, se algo acontecer))).
Naturalmente))))
Sobre o restante: https: //en.cppreference.com/w/cpp/language/union
O cppreference é um recurso útil, mas, devido à sua natureza de referência, não pode conter todas as nuances que só podem ser encontradas nas especificações da linguagem. Para generalizá-las, é mais fácil consultar o stackoverflow e, como resumo, para tipos primitivos, a "transferência" de valores bit a bit é garantida ao ler um campo, mesmo que ele não tenha sido gravado.
Isso é um absurdo. A pessoa deve ter escrito do teto e misturado enum e union. Seu exemplo não compila. Enum não é uma estrutura, mas um número inteiro de 4 bytes. Se você usar a união, ela funcionará perfeitamente bem em C++ e MQL.
PS. Com relação ao primeiro exemplo da entrevista de Jun e à pergunta sobre a frequência com que isso acontece - é claro que isso não acontece em sua forma pura, porque o exemplo é refinado, mas muitas vezes inteiros assinados e não assinados são usados em códigos misturados, e é bem provável que ocorram problemas nesse caso.Ufa, a imagem do mundo foi restaurada! :-) Estou terminando de falar sobre as uniões e outros tipos complexos (espero que, se não houver mais erros, esteja pronto na próxima semana).
P.S. O MetaEditor não destaca os literais com sufixos `u` e `ull`, mas os compila. Ao mesmo tempo, ele destaca `f`, mas informa um erro.... Gostaria de saber se isso é um bug ou uma dica? :-)
Se você é um iniciante e está confuso com nosso debate, deixe-me explicar que em C (e também em C++) é possível adicionar sufixos a literais numéricos que alteram o tipo de dados. Por exemplo, o sufixo `u` transforma um número inteiro comum(int) em um número inteiro sem sinal(uint).
Tente executar um script ligeiramente modificado sugerido por Vladimir Simakov (preste atenção à ausência de espaços entre números e letras, isso é importante):
Esse script, nas primeiras linhas, exibe os nomes de tipo de alguns literais que são compilados na MQL5.
Talvez eu não tenha compilado todos os sufixos funcionais, espero que os especialistas em C me corrijam. Apenas tente entender a lógica com base no material do artigo, na saída do script e em nossa discussão e, se tudo não estiver claro, faça perguntas.