Hatalar, hatalar, sorular - sayfa 162

 
mql5 :

Kontrol edildi, sonuç x=1, y=0

Üzgünüm, sonuçların açıklamasında bir hata yaptım!

 
Ashes :

Üzgünüm, sonuçların açıklamasında bir hata yaptım!

Anahtar :

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

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

C++ standardında bu yer tanımlanmamıştır ve açıkça uygulamaya bağlı olduğu söylenmektedir. 2 ana uygulama vardır:

1. Bir ifadede bir değişken kullandıktan hemen sonra bir artırma sonrası (azaltma sonrası) gerçekleştirin. (nasıl yapıyoruz)

2. Tüm ifade hesaplandıktan sonra bir artış sonrası gerçekleştirin.

Tartışmayacağım, ama bir şekilde sağ taraf aynı olduğunda gözü acıtıyor, ancak hesaplamanın sonucu farklı ...
 

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

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

İşlemlerin önceliği değişti mi?

 
Ashes :

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

Bunun gibi? x=0, y=1
 

Tamamen karıştı!

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!!!

İstisnasız tüm artış sonrası uygulamalarda kesinlikle doğru.

Beklediğiniz davranış için gidiyorsanız, bir ön artış kullanın. x = ++y;

 
Ashes :

Tamamen karıştı!

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

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

Bölüm Aritmetik işlemleri :

Сумма величин                           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;

Artırma ve eksiltme operatörleri yalnızca değişkenler için geçerlidir, sabitler için geçerli değildir. Önek artırma (++i) ve eksiltme (--k), bir değişkene, o değişken bir ifadede kullanılmadan hemen önce uygulanır.

Sonek artırma (i++) ve eksiltme ( k-- ), bir ifadede bu değişkeni kullandıktan hemen sonra bir değişkene uygulanır.

 
Rosh :

Bölüm Aritmetik işlemleri :

...
Sonek artırma (i++) ve eksiltme ( k-- ), bir ifadede bu değişkeni kullandıktan hemen sonra bir değişkene uygulanır.
Her iki satırın da bir postfix artışı vardır. Sonuç (y) farklıdır. Uygulamanın bağlamına bağlı olduğu ortaya çıktı ...
 
Ashes :
Her iki satırda da bir sonek artışı vardır . Sonuç (y) farklıdır. Uygulamanın bağlamına bağlı olduğu ortaya çıktı ...
x = x++; ifadesini pratik olarak doğrulayabilir misiniz? Ne söylemek istedin? Neden x++ atamadan artış kullanmıyorsunuz; Genellikle nasıl kullanılır.
Neden: