Операторы в CTRL

Арифметические операторы

Бинарными являются операторы +, -, *, / и оператор %, который возвращает остаток от деления целых чисел. Применение оператора % с операндами с типом float не допускается. С операндами с типом данных time могут использоваться только операторы + и -.

ЗначокПРИМЕР:

time t1, t2;
//….

t1 -= 3600
// Значение t1 уменьшено на один час
t2 += 1.003
// Значение t2 увеличено на 1003 миллисекунды

Операторы инкремента и декремента

Оператором декремента является —, а инкремента — оператор ++. Данные операторы могут находиться до или после переменной. Операторы декремента и инкремента используются только применительно к переменными. При использовании данных операторов значение переменной увеличивается на единицу. Если данный оператор находится перед переменной, ее значение увеличивается (уменьшается) немедленно. Если оператор инкремента (декремента) находится после переменной, то ее значение увеличивается (уменьшается) только после ее использования.

ЗначокПРИМЕР:

main()
{
   int a, b, d;
   a = 3;
   b = 5;
   d=a*b++;
   DebugN(d); //Результат а*++b = 18, а*b++ = 15
   DebugN(b); //В журнал в обоих случаях выводится 6
}

Условный оператор

expr1 ? expr2 : expr3

Если значение выражения expr1 истинно, то возвращается значение выражения expr2, в противном случае возвращается значение выражения expr3. Данный оператор является аналогом if … else.

ЗначокПРИМЕР:

main()
{
  int a = 3;
   string answer;
   answer = (a == 3) ? «a равно 3» : «a не равно 3»;
   DebugN(answer);
}

ЗначокВНИМАНИЕ

expr2 и expr3 должны возвращать значения одного типа, в противном случае конечный результат может быть непредсказуем.

Операторы отношений и логические операторы

Операторами отношений являются операторы >, >=, <, <=, ==, !=. Оператор && является оператором логического И, а оператор || — логического ИЛИ.

Символ «!» используется в качестве оператора отрицания (НЕ).

Побитовые операторы и операторы сдвига

Побитовый оператор & является оператором побитового И, | является оператором побитового ИЛИ, ^ является побитовым оператором исключающего ИЛИ(XOR).

Разница между XOR и обычным ИЛИ состоит в том, что результат выполения XOR над двумя установленными (= 1) битами равен 0. Результат выполнения обычного ИЛИ ( | ) будет равен 1.

a ^ b

a  b  Результат

—————

0  0    0

0  1    1

1  0    1

1  1    0

 ~ является оператором отрицания (эквивалентен логическому НЕ, значение каждого бита в наборе битов заменяется на противоположное).

При применении к двоичному числу операторов << или >> все биты в числе сдвигаются на определённое количество позиций влево или вправо соответственно. Данное количество указано справа от оператора. Бит, вышедший за рамки числа, теряется. Освободившиеся места заполняются нулями. Правый операнд должен быть положительным.

ЗначокПРИМЕР:

В выражении 1 << 2 двоичное значение 1 преобразовывается в двоичное значение 100. В выражении 110 >> 2 двоичное значение 110 преобразовывается в двоичное значение 001.

ПРИМЕЧАНИЕ

Важно отметить, что в случае присваивания переменной типа bit32 значений, в которых используются старшие биты, в присваиваемых значениях необходимо использовать суффикс ‘u’ (беззнаковый) или ‘l’ (длинный), например, bit32 b = 0x8FFFFFFFU;

При необходимости выполнения операции сдвига при установленном старшем бите переменной:
 

 bit32 Test;

Test = Test >> 16;

Задача может быть решена следующим образом:

main()

{

  bit32 Test;

  Test=0x8FFFFFFFU;

  DebugN(«До сдвига»,Test);

  Test=Test>>16u;

  DebugN(«После сдвига»,Test);

}

/* При использовании «u» (беззнаковый) в утверждении «Test = Test >>16u» 32-х битное слово перемещается на 16 бит вправо, а первые 16 бит заполняются 0 (нулями) */

Операторы присваивания

Результатом любой операции присваивания будет являться задание значения той переменной, которая стоит слева от знака операции. Таким образом, результатом выражения

  1. i = i + 2

будет являться увеличение значения i на 2. Вышеприведенное утверждение (утверждение = statement) может быть записано более компактно:

  1. i += 2

Оператор += является оператором присваивания. Существуют другие операторы присваивания, такие как: -=, *=, /= и %=. Также существуют операторы присваивания для побитовых операторов &, |, ^. Например, выражение a = a&b может быть записано в виде a &= b. Также существуют операторы |= и ^= . Операторы <<= и >>= служат для присваивания переменной слева сдвига её значения.

Множественные присваивания

Множественные присваивания не поддерживаются в языке CONTROL, например:
 

RECTANGLE1.visible = RECTANGLE2.visible = RECTANGLE3.visible = bVisible;

В данном примере только свойству RECTANGLE3.visible будет присвоено значение переменной bVisible . Значения RECTANGLE1.visible и RECTANGLE2.visible не изменятся.

Для присваивания какого-либо значения нескольким атрибутам объекта необходимо использовать функцию setMultiValue().

main()

{

   setMultiValue(«RECTANGLE1», «visible», bVisible, «RECTANGLE2», «visible», bVisible, «RECTANGLE3», «visible», bVisible);

}

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *