Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 427
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
Et lisez combien de fois une variable statique est initialisée. Et la question elle-même disparaîtra pour son absurdité ;)
Alors comment comprendre ceci : les variables locales déclarées avec le mot clé static conservent leurs valeurs pendant toute la durée de vie de la fonction. Chaque fois que la fonction est appelée à nouveau, ces variables locales contiennent les valeurs qu'elles avaient lors de l'appel précédent. Une variable déclarée dans une fonction définie par l'utilisateur n'est-elle pas une variable locale ?
Sur la deuxième question,
si le premier tic n'attrape pas, le second le fera.
Alors comment comprendre ceci : les variables locales déclarées avec le mot clé static conservent leurs valeurs pendant toute la durée de vie de la fonction. Chaque fois que la fonction est appelée à nouveau, ces variables locales contiennent les valeurs qu'elles avaient lors de l'appel précédent. Une variable déclarée dans une fonction définie par l'utilisateur n'est-elle pas une variable locale ?
Renvoie l'heure d'ouverture du bar. Il en sera de même dans tout le bar.
Je l'ai juste ici. Merci.
Le modificateur static la rend statique et elle est déjà stockée en mémoire pour les variables statiques, pas pour les variables locales.
C'est là que je ne comprends pas. A mon avis, peu importe où elle est stockée, par code nous remettons la valeur de la variable à zéro à chaque fois que l'on accède à la fonction. Pour quoi faire ?
C'est là que je ne comprends pas. A mon avis, peu importe où elle est stockée, par code nous remettons la valeur de la variable à zéro à chaque fois que l'on accède à la fonction. Pour quoi faire ?
Pour le premier lancement - à la déclaration. En outre, vous contrôlez vous-même son contenu.
Or, à mon avis, ce n'est pas le cas : le code est lu ligne par ligne à chaque fois et à chaque fois il atteint zéro, et à la première exécution, même s'il n'y a pas d'initialisation, la variable prendrait une valeur nulle. Ainsi, la chaîne de temps statique New_Time=0 ; oblige le programme à faire un travail inutile.
Or, à mon avis, ce n'est pas le cas : le code est lu ligne par ligne à chaque fois et à chaque fois il atteint zéro, et à la première exécution, même s'il n'y a pas d'initialisation, la variable prendrait une valeur nulle. Ainsi, la chaîne de temps statique New_Time=0 ; oblige le programme à faire un travail inutile.
Tu dis non, tu dis oui...
Ne soyez pas offensé. Mais les programmeurs lisent évidemment le texte différemment. J'ai toujours pensé que s'il est dit "égaler à zéro" dans un programme, l'ordinateur doit égaler zéro, que ce soit au lancement ou lors d'une référence récurrente à une ligne de code. Et il n'est pas nécessaire de consulter une revue pour prouver que l'initialisation zéro est inutile, il suffit de la supprimer : static datetime New_Time ; produit absolument les mêmes résultats que static datetime New_Time=0 ; je ne sais pas combien le fonctionnement du programme est plus rapide, j'admets que ce n'est pas du tout significatif, mais cela supprime quand même le "geste inutile".