Ошибки, баги, вопросы - страница 265

 
Voodoo_King:

и не просите написать меня подробнее в хелпдеск. ситуацию эту можно и нужно было отловить перед выпуском билда. у вас по основным направлениям прокол за проколом.

Молодой человек, знали бы вы на какие грабли наступали тут присутствующие...

Во-вторых, разрабы не торгуют в реале.


так что вытираем слюни, пишим заявку, (в заявке можно разработчиков наругать, за то что они такие плохие) .

но делать что то таки надо.

 
Спасибо, будем разбираться.
 

Хотел бы спросить (раньше почему то не сталкивался с данной проблемой)...

Конструкция такого вида целиком ложится на программиста (зацикливание при переполнении беззнакового числа)?

   uchar LastBarInd = 2;
   for (uchar i = LastBarInd; i >= 0; i--)
     {
      ................. // тело
     }

или же можно подправить в компиляторе?

 
AlexSTAL:

Хотел бы спросить (раньше почему то не сталкивался с данной проблемой)...

Конструкция такого вида целиком ложится на программиста (зацикливание при переполнении беззнакового числа)?

или же можно подправить в компиляторе?


Ложится целиком на программиста.

Максимум, что можно сделать в компиляторе - это предупреждение. 

 
stringo:

Ложится целиком на программиста.

Максимум, что можно сделать в компиляторе - это предупреждение. 

Ну предупреждение не помешает, сделайте пожалуйста.
 
AlexSTAL:
Ну предупреждение не помешает, сделайте пожалуйста.

сделали

void OnStart()
  {
   uchar LastBarInd;
   Print(LastBarInd>=0);
   Print(LastBarInd<0);
  }

// expression is always true    1.mq5   4       20
// expression is always false   1.mq5   5       20
 
mql5:

сделали

Извините... не понял...

При чём здесь LastBarInd, когда речь идёт о вычитании из нуля единицы для безнакого числа в цикле?

Uchar i >= 0; i--
 
AlexSTAL:

Извините... не понял...

При чём здесь LastBarInd, когда речь идёт о вычитании из нуля единицы для безнакого числа в цикле?


А вы хотите чтоб компилятор зарание просчитал варианты значений которые может принять переменная i и выдал вам предупреждение?

ЗЫ На компилятор и так возложено куча работы, чтоб он ещё следил за ляпами программиста.

ЗЫ ЗЫ ошибка наверняка будет но уже при исполнении.

 
AlexSTAL:

Извините... не понял...

При чём здесь LastBarInd, когда речь идёт о вычитании из нуля единицы для безнакого числа в цикле?


Проблема зацикливания не в способе изменения (если конечно на ноль не изменять), а в проверке значения этой переменной, которое никогда не будет меньше ноля.

void OnStart()
  {
   uchar v;
   Print(v>=0);
   Print(v<0);
  }
 
Urain:

А вы хотите чтоб компилятор зарание просчитал варианты значений которые может принять переменная i и выдал вам предупреждение?

ЗЫ На компилятор и так возложено куча работы, чтоб он ещё следил за ляпами программиста.

ЗЫ ЗЫ ошибка наверняка будет но уже при исполнении.

Да не... я про частный случай говорил - когда:

1) Тип переменной i - беззнаковый

2) Явно заданная константа

i >= 0

3) Вычитание

i--
Причина обращения: