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

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;
[Удален]
Konstantin Nikitin:

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

Я в курсе, что возвращает Bars(). Вопрос был в другом.

Georgiy Merts:

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

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

Я объяснил "с чего", если вы не поняли с первого раза - прочитайте 10-100 раз. Если после этого понимание не придет - значит на сегодня это недостижимый уровень. Я тоже многие вещи в школе понимал не с первого раза. Тем более что есть железобетонный аргумент - проверка результата в C++

int S::q = z;

по сути ничем не отличается от 

void A::f() { a = 2; }

[Удален]
Alexey Volchanskiy:

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

то есть

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

Напиши в СД

Ах! Простите, как я не права.

Вы Леша лишь от части правы.

{{{Считается, что ноль это false, все, что не ноль - true.}}}

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

Я бы могла о этом целую лекцию написать, об этом.

Но если быть краткой, то довольно не рационально, в принципе использовать булевые значения.

В кратце. Используя булевые значения, на принятие решения мы имеем всего один вариант, True.

Что очень даже неудобно. Что же касается числовых значений, то тут мы можем вытворять всяческие чудеса.

Например:

Int A(0),int B(0);

If A<>4 then B=0; //False;

If A=2  then B=1 ; // True1;

If A>8  then B=2;   //True2;

Как мы можем наблюдать у Нас, Есть выбор. Два варианта на исполнение желаний.

И конечно же мне нет разницы, на каком языке писать, упрекайте если пожелаете.

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

B0biThec:

Ах! Простите, как я не права.

Вы Леша лишь от части правы.

{{{Считается, что ноль это false, все, что не ноль - true.}}}

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

Я бы могла о этом целую лекцию написать, об этом.

Но если быть краткой, то довольно не рационально, в принципе использовать булевые значения.

В кратце. Используя булевые значения, на принятие решения мы имеем всего один вариант, True.

Что очень даже неудобно. Что же касается числовых значений, то тут мы можем вытворять всяческие чудеса.

Например:

Int A(0),int B(0);

If A<>4 then B=0; //False;

If A=2  then B=1 ; // True1;

If A>8  then B=2;   //True2;

Как мы можем наблюдать у Нас, Есть выбор. Два варианта на исполнение желаний.

И конечно же мне нет разницы, на каком языке писать, упрекайте если пожелаете.

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

на Python проверьте ))