Erreurs, bugs, questions - page 2044

 
fxsaber:

Ce n'est pas un bug, il a été discuté depuis ici. Extrait de

Donc si cela a été discuté entre vous et Alexey Viktorov, cela vous donne une raison de croire que ce n'est pas un bug ? ) Et cette personne affirme elle-même que son niveau de connaissances en programmation est bien inférieur au vôtre. C'est-à-dire qu'il peut être rayé de la liste. Vous êtes le seul qui reste). Vous en avez discuté avec vous-même, il ne s'agit donc pas d'un bogue).

C'est un bug. En principe, il ne peut en être ainsi car l'initialisation d'une variable sera ignorée et le code continuera à être exécuté en passant par-dessus. C'est absurde. Et l'ordre d'initialisation n'a pas d'importance ici. Soit la variable est initialisée, soit le compilateur génère une erreur ici. Il n'y a pas de troisième voie. Sinon, il ne s'agit pas d'un langage de programmation, mais d'autre chose.

 

Un autre bug dans les nouvelles constructions :

template<typename T>
int F1(const T& array[])
{
  return ArrayMaximum(array);
}


template<typename T>
int F2(const T& array[]) { return F1(array); }


void OnStart()
  {
    int arr[4]= { 1, 2, 3 };
    Print(F2(arr));  // Выдаёт -1 !!!
  }


Eh, c'est tellement grossier par ici. Je pensais passer aux nouvelles versions, car les anciennes n'acceptent pas les produits du marché. Et voici un insecte sur un insecte !

 
Alexey Navoykov:

Donc si cela a été discuté entre vous et Alexey Viktorov, cela vous donne une raison de croire que ce n'est pas un bug ? ) Et cette personne affirme elle-même que son niveau de connaissances en programmation est bien inférieur au vôtre. C'est-à-dire qu'il peut être rayé de la liste. Vous êtes le seul qui reste). Vous en avez discuté avec vous-même, il ne s'agit donc pas d'un bogue).

C'est un bug. En principe, il ne peut en être ainsi car l'initialisation d'une variable sera ignorée et le code continuera à être exécuté en passant par-dessus. C'est absurde. Et l'ordre d'initialisation n'a pas d'importance ici. Soit la variable est initialisée, soit le compilateur génère une erreur ici. Il n'y a pas de troisième voie. Sinon, il ne s'agit pas d'un langage de programmation, mais d'autre chose.

Vous pouvez le barrer, je n'ai jamais écarté les doigts "quel genre de programmeur suis-je"...

Et votre mère ne vous dit pas de lire la documentation ? J'ai inséré une citation de la documentation spécialement pour ces personnes.

Il existe un forum pour le trading, les systèmes de trading automatisés et les tests de stratégies de trading.

Particularités de mql4, trucs et astuces

Alexey Viktorov, 2017.04.29 12:50

C'est normal que l'aide dise que la variable statique... Lisez par vous-même

Une variable statique peut être initialisée avec une constante ou une expression constante correspondant à son type , contrairement à une simple variable locale qui peut être initialisée avec n'importe quelle expression.


Mais pas une fonction.

Voici comment cela fonctionne

#property strict
#property indicator_chart_window

int TestBrokenStatic()
{
   static int stInt = 101;
   stInt++;
   return stInt;
}

int OnInit()
{
   static int result = 0;
   result = TestBrokenStatic();
   Print("TestStatic Expected result 102   - Actual result=", result);
   result = TestBrokenStatic();
   Print("TestStatic Expected result 103   - Actual result=", result);
   
   return INIT_SUCCEEDED;
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   return rates_total;
}
2017.04.29 13:49:51.546 !Test USDCHF,M15: TestStatic Expected result 103   - Actual result=103
2017.04.29 13:49:48.457 !Test USDCHF,M15: TestStatic Expected result 102   - Actual result=102
2017.04.29 13:49:40.089 Custom indicator Test\!Test USDCHF,M15: loaded successfully

 
Alexey Navoykov:

Un autre bug dans les nouvelles constructions :

Eh, c'est tellement grossier par ici. Je pensais passer aux nouvelles versions, car les anciennes n'acceptent pas les produits du marché. Et puis il y a un bug sur un bug !

Et j'ai raison !

 
Alexey Viktorov:

Vous pouvez le barrer, je n'ai jamais écarté les doigts "quel genre de programmeur suis-je"...

Et votre mère ne vous dit pas de lire la documentation ? ??? Spécialement pour ces personnes, j'ai inséré une citation de la documentation

Je vois, alors je m'excuse, je ne l'ai pas remarqué tout de suite. Il est étonnant, bien sûr, qu'ils aient réussi à le changer sans que personne ne s'en aperçoive. Ce que je ne comprends pas, c'est pourquoi le compilateur ne réagit pas à l'exécution d'une opération invalide. C'est-à-dire qu'il y a un bug dans tous les cas.
 
fxsaber:

J'ai tout compris !


Hmmm, quelle est votre construction ? Le mien est le 1653.

 
Alexey Navoykov:

Donc si cela a été discuté entre vous et Alexey Viktorov, cela vous donne une raison de croire que ce n'est pas un bug ? ) Et cette personne affirme elle-même que son niveau de connaissances en programmation est bien inférieur au vôtre. C'est-à-dire qu'il peut être rayé de la liste. Vous êtes le seul qui reste). Vous en avez discuté avec vous-même, il ne s'agit donc pas d'un bogue).

C'est un bug. En principe, il ne peut en être ainsi car l'initialisation d'une variable sera ignorée et le code continuera à être exécuté en passant par-dessus. C'est absurde. Et l'ordre d'initialisation n'a pas d'importance ici. Soit la variable est initialisée, soit le compilateur génère une erreur ici. Il n'y a pas de troisième voie. Sinon, il ne s'agit pas d'un langage de programmation mais d'autre chose.

Si je trouve une explication logique (cohérente) du résultat, je ne vois pas de bogue. Je ne pense pas qu'il soit acceptable de prouver un bug si le résultat ne coïncide pas avec le C++. C'est quelqu'un de C++ qui a pensé et fait ça. Mais ils ne l'ont peut-être pas pensé et ne l'ont donc pas fait. C'est pourquoi il est préférable de ne pas se référer à quelque chose d'extérieur, mais de se fier à son propre concept intérieur de ce qui doit être. Et il est souhaitable que ce "propre" soit vraiment le sien. Et non le résultat de l'imposition imperceptible de stéréotypes "appropriés" à mesure que l'on acquiert de l'expérience en programmation.

Ça ne me dérange pas d'avoir tort. J'apprends lentement à utiliser mon propre râteau.

 
Alexey Navoykov:

Hmm, quelle est votre construction ? J'ai 1653.

1653x64.

 
fxsaber:

1653x64.

C'est étrange qu'il y ait une divergence alors...


Demandez à quelqu'un d'autre de vérifier par lui-même.

 

Mais j'ai défini la mauvaise dimension du tableau, ce qui a pu l'affecter d'une manière ou d'une autre (alors que cela ne devrait pas l'affecter du tout).

Essayez ceci avec la dimension = 3

template<typename T>
int F1(const T& array[]) { return ArrayMaximum(array); }

template<typename T>
int F2(const T& array[]) { return F1(array); }

void OnStart()
  {
    int arr[3]= { 1, 2, 3 };
    Print(F2(arr));  // Выдаёт -1 !!!
  }
Raison: