Целочисленные выражения в языке IDL составляются из именованных целочисленных констант, целочисленных литералов, операторов (см. таблицу ниже) и группирующих круглых скобок.
Если при вычислении выражения возникнет целочисленное переполнение, генератор исходного кода, использующий IDL-файл, завершит работу с ошибкой.
Сведения об операторах целочисленных выражений в языке IDL
Синтаксис
Операция
Приоритет
Ассоциативность
Особенности
-a
Смена знака
1
Нет
Нет.
~a
Побитовое отрицание
1
Нет
Нет.
a ** b
Возведение в степень
2
Нет
Имеет следующие особенности:
Из-за отсутствия ассоциативности нужно использовать скобки при указании нескольких операторов подряд, чтобы задать порядок выполнения операций.
Пример:
(a ** b) ** c
a ** (b ** c)
Показатель степени не должен быть отрицательным.
a * b
Умножение
3
Левая
Нет.
a / b
Целочисленное деление
3
Левая
Имеет следующие особенности:
Результатом операции является значение, полученное округлением вещественного результата деления до ближайшего меньшего целого. Например, 4 / 3 = 1, -4 / 3 = -2.
Делитель не должен быть нулевым.
a % b
Остаток от деления
3
Левая
Имеет следующие особенности:
Знак результата операции соответствует знаку делителя. Например, -5 % 2 = 1, 5 % -2 = -1.
Делитель не должен быть нулевым.
a + b
Сложение
4
Левая
Нет.
a - b
Вычитание
4
Левая
Нет.
a << b
Битовый сдвиг влево
2*
Нет
Имеет следующие особенности:
Приоритет ниже, чем у унарных операций, но несравним с приоритетами бинарных арифметических операций, поэтому в выражениях с бинарными арифметическими операциями нужно использовать скобки, чтобы задать порядок выполнения операций.
Пример:
a << (b + c)
(a << b) ** c
Из-за отсутствия ассоциативности нужно использовать скобки при указании нескольких операторов подряд, чтобы задать порядок выполнения операций.
Пример:
(a << b) << c
a << (b << c)
Значение сдвига должно быть в промежутке [0; 63].
a >> b
Битовый сдвиг вправо
2*
Нет
Имеет следующие особенности:
Приоритет ниже, чем у унарных операций, но несравним с приоритетами бинарных арифметических операций, поэтому в выражениях с бинарными арифметическими операциями нужно использовать скобки, чтобы задать порядок выполнения операций.
Пример:
a >> (b * c)
(a >> b) / c
Из-за отсутствия ассоциативности нужно использовать скобки при указании нескольких операторов подряд, чтобы задать порядок выполнения операций.