Errori, bug, domande - pagina 162

 
mql5:

Controllato, il risultato è x=1, y=0

Colpa mia, descrizione del risultato sbagliata!

 
Ashes:

Colpa mia, descrizione sbagliata dei risultati!

Chiave:

https://www.mql5.com/ru/docs/basis/operations/rules

Документация по MQL5: Основы языка / Операции и выражения / Приоритеты и порядок операций
Документация по MQL5: Основы языка / Операции и выражения / Приоритеты и порядок операций
  • www.mql5.com
Основы языка / Операции и выражения / Приоритеты и порядок операций - Документация по MQL5
 
stringo:

Lo standard c++ non definisce questo posto e dice esplicitamente che dipende dall'implementazione. Ci sono 2 implementazioni principali:

1. Produce un postincremento immediatamente dopo che la variabile è stata usata nell'espressione. (come abbiamo fatto noi).

2. Postincremento dopo che l'intera espressione è stata calcolata.

Non voglio discutere, ma è un po' stridente quando la parte giusta è la stessa, ma il risultato del calcolo è diverso...
 

x=0; y=0; x = y++; // x = 1 !!!

x=0; y=0; y = y++; // y = 0 !!!

La priorità delle operazioni è riuscita a cambiare?

 
Ashes:

x=0; y=0; x = y++; // x = 1 !

Com'è? x=0, y=1
 

Completamente confuso!

x=0; y=0; x = y++; // x = 0 ? y= 1 !!!

x=0; y=0; y = y++; // y = 0 !!!

 
Ashes:

x=0; y=0; x = y++; // x = 0 ? y= 1 !!!

Perfettamente corretto in tutte le implementazioni di postincremento senza eccezione.

Se camminate il comportamento che sembrate aspettarvi, usate il preincremento. x = ++y;

 
Ashes:

Completamente confuso!

x=0; y=0; x = y++; // x = 0 ? y= 1 !!!

x=0; y=0; y = y++; // y = 0 !!!

Sezione Operazioni aritmetiche:

Сумма величин                           i = j + 2;
Вычитание величин                       i = j - 3;
Изменение знака                         x = - x;
Умножение величин                       z = 3 * x;
Частное от деления                      i = j / 5;
Остаток от деления                      minutes = time % 60;
Добавление 1 к значению переменной      i++;
Добавление  1 к значению переменной      ++i;
Вычитание  1 от значения переменной      k--;
Вычитание  1 от значения переменной      --k;

Le operazioni di incremento e decremento si applicano solo alle variabili, non alle costanti. I prefissi di incremento (++i) e decremento (--k) sono applicati a una variabile appena prima che questa sia usata in un'espressione.

Gli incrementi (i++) e i decrementi (k--) deipostfissi sono applicati a una variabile immediatamente dopo che questa è stata usata in un'espressione.

 
Rosh:

Sezione Operazioni aritmetiche:

...
Gli incrementi (i++) e i decrementi (k--) deipostfissi sono applicati a una variabile immediatamente dopo che questa è stata usata in un'espressione.
In entrambe le linee, l'incremento del postfisso. Il risultato (y) è diverso. Si scopre che dipende dal contesto di applicazione...
 
Ashes:
Entrambe le linee hanno l'incremento del postfisso. Il risultato (y) è diverso. Si scopre che dipende dal contesto di applicazione...
Puoi giustificare praticamente l'espressione x = x++; Cosa vuoi dire? Perché non usare un incremento senza una successiva assegnazione di x++; come si usa di solito.