Подскажите, будет ли работать следующее X=MathMax(X,Y) ? - страница 2

 
klot:
ИМХО. нужно было Lots объявлять как static
static double Lots=1;
double L;
L=MathCeil(AccountBalance( )/10000);
Lots=MathMax(L,Lots);
Print("Balance=",AccountBalance()," L=",L, " Lots=", Lots);
И в чем разница? Если переменная полюбому инициализируется перед вычислением, то что она статическая, что локальная - один фиг, никакой разницы.
Уж по крайней мере на результат вычислений это никак влиять не может. Так что грабли явно не здесь.
Вероятнее всего глобальной инициализации переменной Lots все же не было. А вот нужно ли ее инициализить на каждом тике - вопрос? В общем не ясно что автор хотел и где на грабли наступил. Но в данном контексте static тут явно не при чем.

Кстати, в том виде как написано у Вас, код эквивалентен:
double L=MathCeil(AccountBalance()/10000);
double Lots=MathMax(L,1.0);
Print("Balance=",AccountBalance()," L=",L," Lots=",Lots);
 
Simca:
klot писал (а):
ИМХО. нужно было Lots объявлять как static
static double Lots=1;
double L;
L=MathCeil(AccountBalance( )/10000);
Lots=MathMax(L,Lots);
Print("Balance=",AccountBalance()," L=",L, " Lots=", Lots);
И в чем разница? Если переменная полюбому инициализируется перед вычислением, то что она статическая, что локальная - один фиг, никакой разницы.
Уж по крайней мере на результат вычислений это никак влиять не может. Так что грабли явно не здесь.
Вероятнее всего глобальной инициализации переменной Lots все же не было. А вот нужно ли ее инициализить на каждом тике - вопрос? В общем не ясно что автор хотел и где на грабли наступил. Но в данном контексте static тут явно не при чем.

Кстати, в том виде как написано у Вас, код эквивалентен:
double L=MathCeil(AccountBalance()/10000);
double Lots=MathMax(L,1.0);
Print("Balance=",AccountBalance()," L=",L," Lots=",Lots);



Опять же ИМХО, и из моего небольшого опыта программирования статические переменные инициализируются однократно....
попробуйте так и так и увидите разницу.
 
klot:
Опять же ИМХО, и из моего небольшого опыта программирования статические переменные инициализируются однократно....
попробуйте так и так и увидите разницу.
Проверил.
ОПС! И на старуху бывает проруха. :) Действительно static инициализируется только один раз и в дальнейшем сохраняет свое значение.
БЕРУ СВОИ СЛОВА ОБРАТНО. Действительно такое маленькое добавление способствовало инициализации и сохранению значения переменной. :)
Блин, сам я не использую static а предпочитаю описать переменную как глобальную и присвоить ей первоначальное значение, вот и попался. :)
Причина обращения: