Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Пользуйся поиском на MQL5.community. Это просто!
St0nE
306
St0nE 2011.09.27 19:56 

Совершенно случайно увидел у себя в коде косяк, но при этом все работало корректно.

Но сам факт удивил... :-)

#property copyright "Copyright © 2010, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

double Test;

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
 if(Test==false)
  {
   Test=true;
  }  
//----
   return(0);
  }
//+------------------------------------------------------------------+
Mikhail Dovbakh
3576
Mikhail Dovbakh 2011.09.27 20:03  
St0nE:

Совершенно случайно увидел у себя в коде косяк, но при этом все работало корректно.

Но сам факт удивил... :-)

#property copyright "Copyright © 2010, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

double Test;

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
 if(Test==false)
  {
   Test=true;
  }  
//----
   return(0);
  }
//+------------------------------------------------------------------+

а можно для старослужащих?

в чём баг? Фича?

в чём полезность или непредсказуемость компилятора Вы узрели?

Или как в зеркале - видим зерцало и юношей которых уже нет?

;))

Алексей Тарабанов
7220
Алексей Тарабанов 2011.09.27 20:07  

Не баг и не фича. Как я понимаю, сработало условие double Test==false.

Так и должно быть,- в чем вопрос-то?

AlexeyFX
416
AlexeyFX 2011.09.27 20:17  

Видимо вызвал удивление факт корректной работы кода, когда с переменной double работают как с bool.

Так тут все просто. true=1.0 false=0.0

Просто несколько нерационально и все...

Алексей Тарабанов
7220
Алексей Тарабанов 2011.09.27 20:21  
AlexeyFX:

Видимо вызвал удивление факт корректной работы кода, когда с переменной double работают как с bool.

Так тут все просто. true=1.0 false=0.0

Просто несколько нерационально и все...

Неужто булевы переменные представлены в форме double? Я был уверен, что в int :)
St0nE
306
St0nE 2011.09.27 20:26  

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

Как для меня, это несколько диковато, видимо я один такой.. :-)

Mikhail Dovbakh
3576
Mikhail Dovbakh 2011.09.27 20:29  

есть правила преобразования.

их хорошо помнит компилятор. он так заточен.

и ДОЛЖЕН помнить кодер!

Sergey Guliaev
2302
Sergey Guliaev 2011.09.29 07:12  
Я полагал, что true и false это константы, поэтому по барабану какому типу переменной присваивать значение - всё преобразуется.
Роман
7939
Роман 2011.09.29 11:47  
valenok2003:
Я полагал, что true и false это константы, поэтому по барабану какому типу переменной присваивать значение - всё преобразуется.


Вооот, кстати, да. Грамотный ответ - я как - то не мог найти решения... все думал... :-)

Вообще - как меня учили в Политехе, изначально: true=есть (подаем) напряжение на плате(-у) (1), false=нет напряжения на плате (0). А эти числа 0 и 1 входят в множество как Интеджер, так и дабл, как - то так.

Петр
6086
Петр 2011.09.29 12:02  

М-дя. Разобрались? Ну, теперь ничто не мешает. Грааль!

===

Слушайте, а вот что движет авторами, создающими такие ветки? Что было непонятного до такой степени, чтобы ветку создать?

Bicus
2395
Bicus 2011.09.29 13:24  
Svinozavr:

Слушайте, а вот что движет авторами, создающими такие ветки?

Куча свободного времени. Как пить дать.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий