Основы программирования на C++, PASCAL
Операции ( ) и [ ]. В языке Си круглые и квадратные скобки рассматриваются как операции, причем эти операции имеют наивысший приоритет. Их смысл будет раскрыт позже.
Подведем итог всему разговору об операциях Си/Си++, сведя их в общую табл. 4.2 и расположив по рангам. Ранг операции — это порядковый номер в ряду приоритетов. Чем больше ранг, тем ниже приоритет. В таблице отражено еще одно свойство операций — ассоциативность. Если одна и та же операция, повторяющаяся в выражении несколько раз, выполняется в порядке расположения слева направо, то она называется левоассоциативной; если выполняется справа налево, то операция правоассоциативная. В таблице эти свойства отображены стрелками влево и вправо. Некоторые операции, присутствующие в таблице, пока не обсуждались.
Таблица 4.2
Приоритеты (ранги) операций
Приведение типов при вычислении выражений. Практически во всех языках программирования высокого уровня работает ряд общих правил записи выражений:
• все символы, составляющие выражение, записываются в строку (нет надстрочных и подстрочных символов);
• в выражении проставляются все знаки операций;
• при записи выражения учитываются приоритеты операций;
• для влияния на последовательность операций используются круглые скобки.
Некоторые специфические особенности записи выражений на Си были описаны выше при рассмотрении операций языка.
В процессе вычисления выражений с разнотипными операндами производится автоматическое преобразование типов величин. Знание программистом правил, по которым происходят эти преобразования, предупреждает некоторые ошибки в записи выражений. Суть правил преобразования при выполнении бинарных операций сводится к следующему:
• преобразование не выполняется, если оба операнда имеют одинаковый тип;
• при разных типах операндов происходит приведение величины с младшим типом к старшему типу (кроме операции присваивания);
• при выполнении операции присваивания величина, полученная в правой части, преобразуется к типу переменной, стоящей слева от знака =.
Старшинство типов друг по отношению к другу определяется по следующему принципу; старший тип включает в себя все значения младшего типа как подмножество. Вещественные (плавающие) типы являются старшими по отношению к целым. В свою очередь, внутри каждой из этих групп иерархия типов устанавливается в соответствии с указанным принципом. Целые типы по возрастанию старшинства расположены в таком порядке: