Язык программирования Си для персонального компьютера | страница 71
В языке Си реализованы следующие унарные операции:
Знак операции | Наименование |
- | унарный минус |
+ | унарный плюс |
~ | обратный код |
! | логическое отрицание |
& | адресация |
* | косвенная адресация |
sizeof | определение размера |
Примечание. Операция унарного плюса реализована полностью только в СП ТС. В СП MSC версии 4 она отсутствует, а в версии 5 реализована только синтаксически.
Унарные операции предшествуют своему операнду и ассоциируются справа налево.
В языке Си реализованы следующие бинарные операции:
Знак | Наименование |
* / % | мультипликативные операции |
+ - | аддитивные операции |
<< >> | операции сдвига |
< > <= >= == != | операции отношения |
& | ^ | поразрядные операции |
&& || | логические операции |
, | операция последовательного вычисления |
Бинарные операции ассоциируются слева направо. В языке Си имеется одна тернарная операция — условная, обозначаемая ?:. Она ассоциируется справа налево.
Преобразования по умолчанию
Большинство операций языка Си выполняют преобразование типов для приведения своих операндов к общему типу либо для того, чтобы расширить значения коротких по размеру типов до размера, используемого в машинных операциях. Преобразования, зависящие от конкретной операции и от типа операнда (или операндов), рассмотрены в разделе 4.7. Тем не менее, многие операции выполняют одинаковые преобразования целых и плавающих типов. Эти преобразования называются далее преобразованиями по умолчанию.
Преобразования по умолчанию осуществляются следующим образом:
1) Все операнды типа float преобразуются к типу double.
2) Только для СП ТС: если один операнд имеет тип long double, то второй операнд также преобразуется к типу long double.
3) Если один операнд имеет тип double, то второй операнд преобразуется к типу double.
4) Если один операнд имеет тип unsigned long, то второй операнд преобразуется к типу unsigned long.
5) Если один операнд имеет тип long, то второй операнд преобразуется к типу long.
6) Если один операнд имеет тип unsigned int, то второй операнд преобразуется к типу unsigned int.
7) Все операнды типов char или short преобразуются к типу int.
8) Все операнды типов unsigned char или unsigned short преобразуются к типу unsigned int.
9) Иначе оба операнда имеют тип int.
Унарные операции
Операция унарного минуса выполняет арифметическое отрицание своего операнда. Операнд должен быть целым или плавающим значением. Выполняются преобразования операнда по умолчанию. Тип результата совпадает с преобразованным типом операнда.