Работа с переменными

 

Есть блок кода, где двум переменным присваиваются значения. Например:

Price=5

Price2=7

Мне вдруг вздумалось поменять значения этих переменных местами. То есть переменной Price присвоить значение переменной Price2, а значение переменной Price2, соответственно переменной Price

Я это решил таким ниже указанным блоком. 

{

   Price3=Price;

   Price=Price2;

   Price2=Price3;

   }


Целых три строчки кода потратил). Может есть какой то оператор? Типа "ТудаСюда (Price, Price2)"?

 
Michael-80:

Есть блок кода, где двум переменным присваиваются значения. Например:

Price=5

Price2=7

Мне вдруг вздумалось поменять значения этих переменных местами. То есть переменной Price присвоить значение переменной Price2, а значение переменной Price2, соответственно переменной Price

Я это решил таким ниже указанным блоком. 

{

   Price3=Price;

   Price=Price2;

   Price2=Price3;

   }


Целых три строчки кода потратил). Может есть какой то оператор? Типа "ТудаСюда (Price, Price2)"?

Ну сделайте массив и менять не надо будет, только обращаешься то к индексу 0, то к 1
 
Michael-80:

Целых три строчки кода потратил). Может есть какой то оператор? Типа "ТудаСюда (Price, Price2)"?

встроенной нет ф-ции

если часто нужно использовать, то напишите свою ф-цию обмена значениями 2-х переменных, скрипт для проверки:

void OnStart()
  {
   double x=1,y=2;
   Print(x,",",y);
   Swap(x,y);
   Print(x,",",y);
  }
//+------------------------------------------------------------------+
template<typename T>
void Swap(T &var1,T &var2)
  {
   T tmp=var1;
   var1=var2;
   var2= tmp;
  }
//+------------------------------------------------------------------+
 
Michael-80:

Есть блок кода, где двум переменным присваиваются значения. Например:

Price=5

Price2=7

Мне вдруг вздумалось поменять значения этих переменных местами. То есть переменной Price присвоить значение переменной Price2, а значение переменной Price2, соответственно переменной Price

Я это решил таким ниже указанным блоком. 

{

   Price3=Price;

   Price=Price2;

   Price2=Price3;

   }


Целых три строчки кода потратил). Может есть какой то оператор? Типа "ТудаСюда (Price, Price2)"?


Можете всё это написать на одной строке и еще не использовать Price3   :)


Price=Price+Price2;   Price2=Price-Price2;   Price=Price-Price2;

 
Michael-80:


{

   Price3=Price;

   Price=Price2;

   Price2=Price3;

   }


Целых три строчки кода потратил). Может есть какой то оператор? Типа "ТудаСюда (Price, Price2)"?

Кто мешает одной строкой записать? От этого ничего не поменяется:

{   Price3=Price;   Price=Price2;   Price2=Price3;   }

 

Объявляется переменная для хранения даты и берется собственно дата из объекта:

datetime    time;
time=ObjectGet("Имя объекта",OBJPROP_TIME1);

И почему то компилятор выдает такое предупреждение:

possible loss of data due to type conversion

Как избавиться от этого предупреждения?
 
Michael-80:

Объявляется переменная для хранения даты и берется собственно дата из объекта:

И почему то компилятор выдает такое предупреждение:

possible loss of data due to type conversion

Как избавиться от этого предупреждения?
datetime time = datetime(ObjectGet("Имя объекта",OBJPROP_TIME1));

Ну а лучше использовать новую функцию ObjectGetInteger().

 
Petros Shatakhtsyan:


Можете всё это написать на одной строке и еще не использовать Price3   :)


Price=Price+Price2;   Price2=Price-Price2;   Price=Price-Price2;

Гениально )))

 
Ihor Herasko:

Ну а лучше использовать новую функцию ObjectGetInteger().

Вы, наверное, забавляетесь? Во-первых, функция не подходит, так как она запрашивает ЦЕЛОЕ ЧИСЛО, а мне нужна ДАТА. Во-вторых функция не новая)))

 
Michael-80:

Вы, наверное, забавляетесь? Во-первых, функция не подходит, так как она запрашивает ЦЕЛОЕ ЧИСЛО, а мне нужна ДАТА. Во-вторых функция не новая)))

А разве дата это не целое число?

 
Michael-80:

Вы, наверное, забавляетесь? Во-первых, функция не подходит, так как она запрашивает ЦЕЛОЕ ЧИСЛО, а мне нужна ДАТА. Во-вторых функция не новая)))

ObjectGetInteger(), несмотря на свое название, возвращает не int, а long. В тип long отлично входит значение типа datetime. Кроме того, в справке напрямую написано:

ObjectGetInteger

Возвращает значение соответствующего свойства объекта. Свойство объекта должно быть типов datetime, int, color, bool или char.