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

 

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

const bool barsToStart = Bars( _Symbol, _Period, startTime, timeCurrent );
 
A100:
 

Если здесь

в (*) подразумевается A::a = 2, а не ::a = 2

то и там должно подразумеваться S::q = S::z, а не S::q = ::z

С чего бы это там подразумевалось S::z, если выражение стоит не в функции объекта S, а на глобальном уровне.

Глобальный уровень и есть, то есть, подразумевается ::z - безо всяких this.

 
Alexey Kozitsyn:

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

Странно... А у меня - ничего не пишет...

 
Georgiy Merts:

Странно... А у меня - ничего не пишет...

В том то и дело, что ничего не пишет. А должен, я считаю...

 
Alexey Kozitsyn:

В том то и дело, что ничего не пишет. А должен, я считаю...

В смысле результат int преобразуется к bool ?

Да, по идее, надо выдать предупреждение.

 
Georgiy Merts:

В смысле результат int преобразуется к bool ?

Да, по идее, надо выдать предупреждение.

Да, неявное приведение идет без предупреждения.

 
Alexey Kozitsyn:

В том то и дело, что ничего не пишет. А должен, я считаю...

Вообще должен. Могу предположить, почему НЕ пишет. Считается, что ноль это false, все, что не ноль - true.

то есть

bool b1 = 123; // true
b1 = 0; // false

Наверное по этим правилам и приводят, хотя повторю, я считаю, варнинг должен быть

Напиши в СД

 
Alexey Volchanskiy:

Напиши в СД

Да написал уже... но не ответили. Вообще, СД странно работают: написал заявку, заявка принята к рассмотрению. И тишина. Зачем брать заявку на рассмотрение, если не собираетесь отвечать? И так абсолютно по каждой заявке.

 
Alexey Kozitsyn:

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

Ответ разработчиков:

Какого предупреждения вы ждёте? 0 это false, не 0 - true.
Это обычная практика в логических выражениях

Нужно быть внимательнее.

 
Alexey Kozitsyn:

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

Bars смотрите что возвращает, и к чему вы пытаетесь приравнять.

const bool barsToStart = Bars( _Symbol, _Period, startTime, timeCurrent ) == 0 ? false : true;
Причина обращения: