Вход

Просмотр полной версии : условный оператор If...else


simple
01.10.2010, 22:01
Немогу понять почему так происходит...:blink: Например:

if((a==0)&&(b==0)){
if(c==d){ .....;break;}
if(c>d){ .....;break;}
}

При условии a=0 и b=0 выполняются все два внутренних if..хотя там стоит определенное условия для их выполнения, плюс еще и break, немогу опнять почему так, чуствую что глупая ошибка но никак ее немогу найти, помогите кто знает. :cray:

Kolyaj
01.10.2010, 22:03
break из цикла выпрыгивает, а не из произвольного блока.

simple
01.10.2010, 22:04
break из цикла выпрыгивает, а не из произвольного блока.
Понятно, но а по поводу кода есть идеи, почему так делается, не ужели из-за break?

Kolyaj
01.10.2010, 22:06
Значения c и d выведите и посмотрите.

simple
01.10.2010, 22:41
ничего не могу понять...

if((_sell>'')&&(_buy>'')){

/*1 блок*/ if(_buy[0][0]==_sell[0][0]){
do{
if(_buy[0][1]-_sell[0][1]<0){_sell[0][1]-=_buy[0][1];k=_buy.shift();;break; }
if(_buy[0][1]-_sell[0][1]>0){
_buy[0][1]-=_sell[0][1];k=_sell.shift();if(_sell=='')break;}
else {k=_sell.shift();_buy.shift();;break;}}
while((_buy[0][0]>0)&&(_buy[0][0]==_sell[0][0]))}
//если убираю следующий блок if все работает как часы, но с ним идут глюки, не работает первый блок if...
/*2 блок*/ if(_buy[0][0]>_sell[0][0]){
do{
if(_buy[0][1]-_sell[0][1]>0){
_buy[0][1]-=_sell[0][1];k=_sell.shift();
if(_sell=='')break;}
else {k=_sell.shift();_buy.shift();break;}}
while((_buy[0][0]>0)&&(_buy[0][0]>_sell[0][0])) }
}

simple
01.10.2010, 22:55
все разобрался...ошибка была как всегда на поверхности, добавил else между 1 и 2 блоком, только вот не пойму, почему все таки код не работал, ведь вроде все правильно...главный If и внутри его 2 if...непонятно, может какой нибудь баг? :-?

Kolyaj
01.10.2010, 22:57
Код форматируйте нормально, будете видеть такие ошибки.