[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 94

 

Her iki seçenek de doğrudur, ancak ikincisi daha hızlıdır. İlkinde, tüm koşullar her zaman kontrol edilir, ikincisinde - hepsi değil. Ve başka bir sahiplikle karıştırılmamak daha iyidir, şöyle bir şey yazın:

 //--- 2.
if (cond_0)
{  if (cond_1)           a=result_1;
   else if (cond_2)      a=result_2;
        else if (cond_3) a=result_3;
}

Veya hemen blokların etrafına küme parantezleri koyun.

 
Mathemat :

Her iki seçenek de doğrudur, ancak ikincisi daha hızlıdır. İlkinde, tüm koşullar her zaman kontrol edilir, ikincisinde - hepsi değil. Ve başka bir sahiplikle karıştırılmamak daha iyidir, şöyle bir şey yazın:

Veya hemen blokların etrafına küme parantezleri koyun.

Tavsiyen için teşekkürler. Daha önce Expert Advisor'ı doğru yazmaya çalışmışsam, şimdi hızına dikkat ediyorum. :)
 
Mathemat :

Her iki seçenek de doğru

Hayır, kodlar genellikle eşit değildir.
 
elbette koşulların hesaplanması gerekmiyorsa, swith() ile atlamak daha kolay olabilir ...
 
TheXpert : Hayır, kodlar genellikle eşit değildir.

Evet, şimdi koşul_1, koşul_2, koşul_3 birbirini dışlamadığında ne olacağı hakkında tahminde bulunalım...

Ben tartışmıyorum, kodlar genel durumda farklı bir sonuç veriyor. Ancak koşullar kesişmiyorsa, sonuçlar aynıdır.

 
FAQ :
elbette koşulların hesaplanması gerekmiyorsa, swith() ile atlamak daha kolay olabilir ...
Anahtarda, case'in değeri int olmalıdır ve koşul_ her zaman int değildir. Dürüst olmak gerekirse, kaydın daha iyi / daha hızlı olduğu mantığın kendisiyle ilgileniyordum.
 
paladin80 :
Anahtarda, case'in değeri int olmalıdır ve koşul_ her zaman int değildir. Dürüst olmak gerekirse, kaydın daha iyi / daha hızlı olduğu mantığın kendisiyle ilgileniyordum.
en sık kullanılanlar en üstte olacak şekilde ayrı koşullar
 
paladin80 :
Anahtarda, case'in değeri int olmalıdır ve koşul_ her zaman int değildir. Dürüst olmak gerekirse, kaydın daha iyi / daha hızlı olduğu mantığın kendisiyle ilgileniyordum.

İkincisi, ancak yuvalama konusunda bir kısıtlama var.

Mümkünse kasayı kullanmak daha iyidir.

 
Evet, switch kullanıyorum. Birbirini dışlayan koşullara gelince, bu fenomeni şu şekilde anlıyorum:
 //--- 1.
int x= 1 , y= 1 ;
if (x== 1 )
{   if (y> 0 )  a=result_1;
   if (y< 2 )  a=result_2;
   if (y== 1 ) a=result_3;
}
// a=result_3

//--- 2.
int x= 1 , y= 1 ;
if (x== 1 )
{   if (y> 0 )            a=result_1;
   else if (y< 2 )       a=result_2;
         else if (y== 1 ) a=result_3;
}
// a=result_1
 

Sizde sadece tüm koşullar y = 1'de gözlemlenir. Birbirlerini dışlamazlar.

Örneğin birbirini dışlayanlar: y<0, y==0, y>0.