Errori, bug, domande - pagina 265

 
Voodoo_King:

e non chiedetemi di scrivere altri dettagli all'helpdesk. questa situazione avrebbe potuto e dovuto essere presa prima che la build fosse rilasciata. avete foratura dopo foratura nelle aree principali.

Giovanotto, se tu sapessi che rastrello hanno calpestato le persone qui...

In secondo luogo, gli sviluppatori non vendono nella vita reale.


Quindi pulisci la bava, scrivi un'applicazione (nell'applicazione puoi rimproverare gli sviluppatori per essere così cattivi).

Ma qualcosa deve essere fatto.

 
Grazie, ci penseremo noi.
 

Vorrei chiedere (non ho mai incontrato questo problema prima per qualche motivo)...

Questo tipo di costruzione dipende interamente dal programmatore (looping quando un numero senza segno è in overflow)?

   uchar LastBarInd = 2;
   for (uchar i = LastBarInd; i >= 0; i--)
     {
      ................. // тело
     }

O può essere risolto nel compilatore?

 
AlexSTAL:

Vorrei chiedere (non ho mai incontrato questo problema prima per qualche motivo)...

Un costrutto di questo tipo ricade interamente sul programmatore (il looping quando un numero non firmato trabocca)?

O può essere modificato nel compilatore?


Ricade interamente sul programmatore.

Il massimo che si può fare nel compilatore è un avvertimento.

 
stringo:

Questo dipende interamente dal programmatore.

Il massimo che si può fare in un compilatore è un avvertimento.

Beh, un avvertimento non sarebbe male, per favore fatelo.
 
AlexSTAL:
Beh, un avvertimento non sarebbe male, per favore fatelo.

fatto

void OnStart()
  {
   uchar LastBarInd;
   Print(LastBarInd>=0);
   Print(LastBarInd<0);
  }

// expression is always true    1.mq5   4       20
// expression is always false   1.mq5   5       20
 
mql5:

fatto

Scusa... Non capisco...

Cosa c'entra LastBarInd con la sottrazione di uno da zero per un numero senza segno in un ciclo?

Uchar  i >= 0; i--
 
AlexSTAL:

Scusa... Non capisco...

Cosa c'entra LastBarInd con la sottrazione di uno da zero per un numero senza segno nel ciclo?


E vuoi che il compilatore calcoli in anticipo tutti i possibili valori che la variabile i può assumere e ti dia un avvertimento?

SZZ Il compilatore ha già un sacco di lavoro da fare, quindi deve stare attento agli errori del programmatore.

Probabilmente ci sarà un errore in fase di esecuzione.

 
AlexSTAL:

Scusa... Non capisco...

Cosa c'entra LastBarInd con la sottrazione di uno da zero per un numero senza segno nel ciclo?


Il problema del looping non è il modo in cui viene cambiata (a meno che, ovviamente, non venga cambiata a zero), ma il controllo del valore di quella variabile, che non sarà mai meno di zero.

void OnStart()
  {
   uchar v;
   Print(v>=0);
   Print(v<0);
  }
 
Urain:

Volete che il compilatore calcoli in anticipo i valori che la variabile i può assumere e vi dia un avvertimento?

SZZ Il compilatore ha già un sacco di lavoro da fare, quindi deve stare attento agli errori del programmatore.

ZS L'errore probabilmente si verificherà, ma a runtime.

No... Intendevo un caso speciale in cui:

1) Il tipo della variabile i è senza segno.

2) Una costante esplicita

i >= 0

3) sottrazione

i--