Да, я понимаю как работать с разрядами двоичной системы.
Из этого кода выходит, например функция вернула 3 .
(11&1)==1 ; 11==01 нет, это ложь, не сработало.
Я сейчас это писал и подумал, может я неправильно понимаю операции.
& это значит, я перевожу десятичные значения в двоичные и делаю побитово конъюнкцию.
== истина, когда первый член равен второму члену. Всё так?
Вот в этих дебрях я не понимаю, я самоучка. Просто знаю как проверить и что могу получить. Ваш пример (11&1)==1 в результате будет true так как 11 можно составить только из флагов 1+2+8 следовательно 1 в набор входит.
Alexey Viktorov: Вот в этих дебрях я не понимаю, я самоучка. Просто знаю как проверить и что могу получить. Ваш пример (11&1)==1 в результате будет true так как 11 можно составить только из флагов 1+2+8 следовательно 1 в набор входит.
Проверьте что будет возвращено
Это я написал в двоичной системе, забыл указать. Подставил значения в код написанный, если функция вернула 3 и сравнила с FOK. Вот так записывается вроде двоичная. (0b11 & 0b1)==0b1 ; результат в скобках 0b11 имеем выражение 0b11==0b1 ; но получается ложь, по моему. А чтобы всё заработало должна быть истина. Ну и раз этот пример в справке там истина выходит. Видимо я чтото не так понял. Я сейчас сишную справку смотрел, а до этого mqlную. Вроде всё так. Извиняюсь, если я задаю очень уж тупые вопросы, и спасибо всем за ответы.
в mql справке написано, что значение истина это любое ненулевое значение, видимо это и ответ. А дальше равенство , и в си равенство. Получается, это не равенство, а если сравниваемые члены больше нуля, то значение истина. Наверно так. Как то непонятно написано. Это я про оператор ==.
Внутреннее представление – целое число размером 1 байт. Необходимо отметить, что в логических выражениях допустимо использовать вместо типа bool другие целые или...
Побитовая операция, это П О Б И Т О В А Я операция. Она с битами работает. Например 1 - это 00000001. 2 - это 00000010. Флаг может быть равен только 1, 2, 4, 8 и т.п. Короче, один бит занят.
А в наборе флагов может быть любые биты заняты, например 00000101. В этот набор входит флаг 00000001 и 00000100. А чтобы узнать входит ли какой-то флаг в набор флагов, надо сделать побитовое "и" флага и набора, если после этого останется флаг, то значит он есть в наборе:
(00000101 & 00000100) == 00000100 - true. Это значит, что в наборе 00000101 есть флаг 00000100.
Побитовая операция, это П О Б И Т О В А Я операция. Она с битами работает. Например 1 - это 00000001. 2 - это 00000010. Флаг может быть равен только 1, 2, 4, 8 и т.п. Короче, один бит занят.
А в наборе флагов может быть любые биты заняты, например 00000101. В этот набор входит флаг 00000001 и 00000100. А чтобы узнать входит ли какой-то флаг в набор флагов, надо сделать побитовое "и" флага и набора, если после этого останется флаг, то значит он есть в наборе:
(00000101 & 00000100) == 00000100 - true. Это значит, что в наборе 00000101 есть флаг 00000100.
ПРавильно ли утверждение что (положительный член 1 == положительный член 2) но при этом положительный член 1 не равен положительному члену 2, это истина? Получается так , ведь в справке написано, что истина это любое ненулевое значение, и тогда код рабочий.
Ivan_Invanov: ПРавильно ли утверждение что (положительный член 1 == положительный член 2) но при этом положительный член 1 не равен положительному члену 2, это истина? Получается так , ведь в справке написано, что истина это любое ненулевое значение, и тогда код рабочий.
Меня запутало, что там дальше написано слово равенство.
Dmitry Fedoseev: В каком месте справки? Конкретно где и что?
По моему, это противоречие. Получается истина, не если а равно b, а если a и b отличные от нуля. Ну не противоречие, а непонятно написано. Ну вроде разобрался, спасибо.
ENUM_SYMBOL_TRADE_EXECUTION Напротив этого не написано какой тип оно имеет, а заголовки в справке перепутаны(вроде писалось для строковых, а потом без упоминания началась речь об целочисленных) . По этому я попробовал все три варианта, но каждый раз ошибка компилятора. Что не так?
Ivan_Invanov: ENUM_SYMBOL_TRADE_EXECUTION Напротив этого не написано какой тип оно имеет, а заголовки в справке перепутаны(вроде писалось для строковых, а потом без упоминания началась речь об целочисленных) . По этому я попробовал все три варианта, но каждый раз ошибка компилятора. Что не так?
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Да, я понимаю как работать с разрядами двоичной системы.
Из этого кода выходит, например функция вернула 3 .
(11&1)==1 ; 11==01 нет, это ложь, не сработало.
Я сейчас это писал и подумал, может я неправильно понимаю операции.
& это значит, я перевожу десятичные значения в двоичные и делаю побитово конъюнкцию.
== истина, когда первый член равен второму члену. Всё так?
Проверьте что будет возвращено
Вот в этих дебрях я не понимаю, я самоучка. Просто знаю как проверить и что могу получить. Ваш пример (11&1)==1 в результате будет true так как 11 можно составить только из флагов 1+2+8 следовательно 1 в набор входит.
Проверьте что будет возвращено
Побитовая операция, это П О Б И Т О В А Я операция. Она с битами работает. Например 1 - это 00000001. 2 - это 00000010. Флаг может быть равен только 1, 2, 4, 8 и т.п. Короче, один бит занят.
А в наборе флагов может быть любые биты заняты, например 00000101. В этот набор входит флаг 00000001 и 00000100. А чтобы узнать входит ли какой-то флаг в набор флагов, надо сделать побитовое "и" флага и набора, если после этого останется флаг, то значит он есть в наборе:
(00000101 & 00000100) == 00000100 - true. Это значит, что в наборе 00000101 есть флаг 00000100.
Побитовая операция, это П О Б И Т О В А Я операция. Она с битами работает. Например 1 - это 00000001. 2 - это 00000010. Флаг может быть равен только 1, 2, 4, 8 и т.п. Короче, один бит занят.
А в наборе флагов может быть любые биты заняты, например 00000101. В этот набор входит флаг 00000001 и 00000100. А чтобы узнать входит ли какой-то флаг в набор флагов, надо сделать побитовое "и" флага и набора, если после этого останется флаг, то значит он есть в наборе:
(00000101 & 00000100) == 00000100 - true. Это значит, что в наборе 00000101 есть флаг 00000100.
ПРавильно ли утверждение что (положительный член 1 == положительный член 2) но при этом положительный член 1 не равен положительному члену 2, это истина? Получается так , ведь в справке написано, что истина это любое ненулевое значение, и тогда код рабочий.
В каком месте справки? Конкретно где и что?
По моему, это противоречие. Получается истина, не если а равно b, а если a и b отличные от нуля. Ну не противоречие, а непонятно написано. Ну вроде разобрался, спасибо.
ENUM_SYMBOL_TRADE_EXECUTION Напротив этого не написано какой тип оно имеет, а заголовки в справке перепутаны(вроде писалось для строковых, а потом без упоминания началась речь об целочисленных) . По этому я попробовал все три варианта, но каждый раз ошибка компилятора. Что не так?
Нужно делать так: