Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Не выдаст.
Renat писал (а):
С одной стороны зря предупреждение (это именно предупреждение, а не ошибка) выдается,
а с другой дополнительная защита от неправильного использования.
Например, я себе никогда не позволяю писать if(var) ... , если var не является чистым bool.
Береженого бог бережет.
true и false представлены в машине соотв. как 1 и 0.
А для переменных язык ничего подобного не определяет. То есть, язык вообще не определяет, как представлен bool в машине. Это делает компилятор.
Начинается сказка про белого бычка.
Поэтому мы обсуждаем уже прошедший факт, и я не буду больше тратить на него времени. Что мне было нужно, я выяснил.
Всем желаю удачи.
bool не может хранить более двух значений, каких - неважно.
Bool и не хранит более двух значений. И значения эти очень даже важны, так как они, собственно, и определяют bool как понятие - true и false. Где же здесь ошибка?
ОШИБКА БЫЛА ЗДЕСЬ.
Этот код выдаёт в журнал:
Внимание - вопрос? ОТКУДА берутся эти значения I = 15, 17, 19, 21 и т.д и др. и т.п., т.е. ЛЮБЫЕ ЦЕЛЫЕ числа, после преобразования bool в int, и обратно, если bool хранит ТОЛЬКО ДВА различных значения?
Ну хоть книжку про С++ прочитали бы, что ли, "программеры", для расширения кругозора. Сколько можно тыкать в одно и то же, первый класс, вторая четверть.
Не стоит, наверно, копья ломать, большой разницы все равно нет, а нервы и время отнимает.
И в Microsoft T-SQL код:
выдаёт на печать 0.
Мне просто понадобится хранить в памяти большой двумерный массив bool переменных для истории цен за пару-тройку лет назад, так реально каждая bool ячейка съест не бит и не байт, а 4 байта в текущей реализации - много :(
Надеюсь, 2 Gb RAM всё же хватит.
То есть, язык вообще не определяет, как представлен bool в машине. Это делает компилятор.
Начинается сказка про белого бычка.
По отношению же к типу bool значение всего два - ноль и не ноль - здесь Вы совершенно правы.
Если жде имелся ввиду МКЛ, то разработчики всегда, в не описанных ими случаях, рекомендовали обращаться к стандартам СС++. Так, что и здесь можно считать, что этот стандарт действует.
Успехов.
В результате решили оставить как есть: bool может быть нулем и не нулем. Это не противоречит стандартам.
Мы обсудили и проверили возможность принудительного сведения bool к 0 и 1, но оказалось, что просто так это не сделать - придется в нескольких местах менять код, разделяя обработку int и bool (bool на самом деле является int и их математические операции объединены).
В результате решили оставить как есть: bool может быть нулем и не нулем. Это не противоречит стандартам.
Если работать с типом bool именно как с логическим, то для этого предусмотрено 2 формально описанных значения True и False - это исключает любую неоднозначность (остальное проблемы компилятора).
Если же есть желание обрабатывать bool как целочисленный тип (по сути он тот же int), то опять же есть достаточно формализованное решение - сравнение ==0 и !=0. Всего-то. И не надо ничего мудрить. Да и менять ничего не надо!