Auto-apprentissage du langage MQL5 à partir de zéro - page 44
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Les objets globaux, sont initialisés avec le constructeur par défaut. Pour les types primitifs (dans notre cas, tous sauf les chaînes de caractères), c'est 0. Mais pour la mémoire (lire les variables) allouée sur la pile, elle n'est pas initialisée. C'est pourquoi les variables globales peuvent ne pas être initialisées, rappelez-vous que dans ce cas elles seront égales à zéro. Mais l'absence d'initialisation (en même temps, habituez-vous à éviter immédiatement les avertissements générés par le compilateur, à moins que vous ne sachiez exactement ce que vous faites) est un problème sérieux, car la lecture d'une variable non initialisée entraîne un comportement indéfini. Par exemple, ce code se comporte différemment dans les versions release et debug et personne ne peut garantir que si vous changez la version du compilateur ou les paramètres d'optimisation, son comportement ne changera pas aussi :
Bonjour, Vladimir, merci de votre précision.
Sincèrement, Vladimir.
Peter, au sujet des variables globales, je n'ai pas encore trouvé dans la littérature que les variables globales doivent être prédéfinies. Avez-vous un lien vers la source pour améliorer vos connaissances en la matière ? La référence MQL5 ne contient pas de référence explicite à l'initialisation :
Le type bool est conçu pour stocker les valeurs logiques true ou false, dont la représentation numérique est respectivement 1 ou 0 .
Exemples :
bool a =true;
bool b =false;
bool c =1;
La représentation interne est un nombre entier de 1 octet. Il convient de noter que dans les expressions booléennes, il est acceptable d'utiliser d'autres types entiers ou réels ou des expressions de ces types à la place de bool, et le compilateur ne générera pas d'erreur. Dans ce cas, le zéro sera interprété comme faux et toutes les autres valeurs comme vraies.
Je l'ai ajouté au code du script :
Dans les commentaires du script, un étudiant en programmation de première année a clairement expliqué pourquoi la valeur prédéfinie du type de données bool doit être exactement fausse et non vraie.
Salutations, Vladimir.
Je l'ai ajouté au code du script :
Respectueusement, Vladimir.
Je continue à étudier le langage de programmation MQL5 et je publie le code d'un script, qui est la suite d'une tâche des participants de ce fil. Le script a été testé dans tous les modes. Aucun problème n'a été détecté. Appliqué le nombre minimum de paramètres d'entrée pour commencer. Le code du script est écrit en anglais, les commentaires du code sont en russe, pour faciliter le processus d'apprentissage. Comme je l'ai promis plus tôt, j'ai essayé de décrire le script d'une manière compréhensible pour un élève de la première classe de l'école de programmation.
Meilleures salutations, Vladimir.
Vladimir, tu ne devrais pas l'écrire comme ça. Ne pas verrouiller les fonctions dans les variables externes. La seule exception pour vous jusqu'à présent est la prise de valeurs à partir de variables d'entrée.
Bonjour Vasily ! Pour être honnête, je n'ai pas bien compris le sens de ce qui est en gras. Veuillez préciser ce que vous entendez par là.
Sincèrement, Vladimir.
Bonjour Vasily ! Honnêtement, je n'ai pas bien compris le sens de ce qui était écrit en gras. Veuillez préciser ce que vous entendez par là.
Sincèrement, Vladimir.
N'utilisez pas de variables globales. J'écrirai plus tard pourquoi vous ne devriez pas les utiliser.
Il y a une bonne anecdote à ce sujet :
- Question : quel est le meilleur type pour une variable globale en c++ ?
- Réponse : //
N'utilisez pas de variables globales. J'écrirai plus tard pourquoi il ne faut pas les utiliser.
Maintenant je comprends. Merci, j'attends que vous me disiez pourquoi vous ne pouvez pas utiliser les variables globales.
Salutations, Vladimir.