Использование переменной NULL

 

В Справочнике сказано:

Предопределенная константная переменная NULL имеет тип void. Она может быть присвоена переменным любых других фундаментальных типов без преобразования. Также допускается сравнение переменных фундаментальных типов со значением NULL

 Я это понял так, что у переменной типа bool фактически может быть три значения: true, false и NULL. Но вот при отладке обнаружил следующее:

Bool 

 Если bool-переменные test2 и test3 выдают одинаковые значения (false), то какой смысл предлагать использовать переменную NULL? 

У меня в эксперте пока что предусмотрено сравнение bool-переменных со значениями (true, false, NULL), а также различная обработка этих bool-переменных в зависимости от их значений (true, false, NULL). Получается, что такой подход ущербен?

Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип bool
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип bool
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Тип bool - Документация по MQL5
 

false = NULL = 0

у bool всего два значения, а NULL по сути является false.


 
На то она и константная переменная, которая инициализирует переменную любого фундаментального типа в 0, для логического типа 0=false, 1=true

 
Yedelkin:

В Справочнике сказано:

Предопределенная константная переменная NULL имеет тип void. Она может быть присвоена переменным любых других фундаментальных типов без преобразования. Также допускается сравнение переменных фундаментальных типов со значением NULL

 Я это понял так, что у переменной типа bool фактически может быть три значения: true, false и NULL. Но вот при отладке обнаружил следующее:

 

 Если bool-переменные test2 и test3 выдают одинаковые значения (false), то какой смысл предлагать использовать переменную NULL? 

У меня в эксперте пока что предусмотрено сравнение bool-переменных со значениями (true, false, NULL), а также различная обработка этих bool-переменных в зависимости от их значений (true, false, NULL). Получается, что такой подход ущербен?

Утверждение о том, что у bool есть ТРИ значение не верно в корне.

Если не вдаваться в подробности сто NULL является красивым способом использования 0 в качестве параметра для функций или результатом этих функций (возможно и те только функций) равных 0.

К примеру вот такой вот код вернет тип того графика (CHART_BARS, CHART_CANDLES, CHART_LINE) на котором работает эксперт.

ChartGetInteger(NULL,CHART_MODE);
 

Yedelkin:

Получается, что такой подход ущербен?


про булевые переменные расказали уже всё, а подход таки нормален :)

http://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80




 

Спасибо всем огромное за чёткие разъяснения!  Век живи - век учись!

Swan:

про булевые переменные расказали уже всё, а подход таки нормален :)

http://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80

ОК! Я имел ввиду "ущербность реализации троичной логики через bool-переменные", если можно так сказать. Придётся обойтись перечислениями типа enum, хотя поcле прочтения ссылки так и напрашивается фраза о новом фундаментальном типе aristo, предназначенном для хранения логических значений true (истина), false (ложь) и nothing (отсутствие значений true и false), числовое представление которых 1, -1 или 0 соответственно :)

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