Программирование >>  Перегруженные имена функций и идентификаторы 

1 ... 14 15 16 [ 17 ] 18 19 20 ... 210


Выражения в скобках

Любой операнд может быть заключен в скобки. Они не влияют на тип и значение выражения, заключенного в скобки. Например, в выражении (10 + 5) / 5 скобки, заключающие запись 10 + 5, означают, что величина 10 + 5 является левым операндом операции деления. Результат выражения (10 + 5) / 5 равен 3. Без скобок значение записи 10 + 5 / 5 равнялось бы 11. Хотя скобки влияют на то, каким путем группируются операнды в выражении, они не гарантируют детальный порядок вычисления выражения.

Type-cast выражения

Type-cast выражения имеют следующий синтаксис:

(<type-name>)<operand>

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

Константное выражение - это выражение, результатом вычисления которого является константа. Операндами константного выражения могут быть целые константы, константы символы, плавающие константы, константы перечисления, type-cast выражения целого и плавающего типов и другие константные выражения. Операнды могут комбинироваться и модифицироваться посредством операций.

Константные выражения не могут использовать операции присваивания или бинарную операцию последовательного вычисления. Унарная операция адресации & может быть использована только при некоторых инициализациях.

Константные выражения, используемые в директивах препроцессора, имеют дополнительные ограничения, поэтому называются ограниченнымиконстантными выражениями:

<restricted-constant-expression>

Ограниченные константные выражения не могут содержать sizeof-выражений, констант перечисления или type-cast

выражений любого типа. Они могут, однако, содержать специальные константные, имеющие синтаксис:

defined(<identifier>)

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



переменной внешнего уровня с основными и структурными типами, а также с типом совмещения и массивом внешнего уровня, индексированным константным выражением.

В этих выражениях допускается сложение или вычитание с адресными подвыражениями.

Операции

Си-операции требуют один операнд (унарные операции), два операнда (бинарные операции) или три операнда (тернарная операция). Операции присваивания - это унарные или бинарные операции.

Унарными операциями Си являются следующие:

- ~ !

Операции дополнения.

* &

Операции разадресации и адресации.

sizeof

size-операция.

Интерпретация унарных операций производится справа налево. Бинарные операции интерпретируются слева направо. Бинарными операциями являются следующие:

* / %

Мультипликативные операции.

Аддитивные операции. Операции сдвига.

< > <= >= == !=

Операции отношений. Операции с битами.

Операция последовательных вычислений.



&&

Логические операции.

В Си имеется одна тернарная операция - это операция условия ?:. Она интерпретируется справа налево.

Обычные арифметические преобразования

Большинство операций Си выполняют преобразование типов, чтобы привести операнды выражений к общему типу, или чтобы расширить короткие величины до размера целых величин, используемых в машиннтх операциях. Преобразования, выполняемые операциями Си, зависят от специфики операций и от типа операнда или операндов. Тем не менее, многие операции выполняют похожие преобразования целых и плавающих типов. Эти преобразования известны как арифметические преобразования, поскольку они применяются к типам величин, обычно используемых в арифметике.

Арифметические преобразования, приведенные ниже, называются обычные арифметические преобразования.

Обычные арифметические преобразования осуществляются следующим образом:

1. Операнды типа float преобразуются к типу double.

2. Если один операнд типа double, то второй операнд преобразуется к типу double.

3. Любые операнды типов char или short преобразуются к int.

4. Любые операнды типов unsigned char или unsigned short преобразуются к типу unsigned int.

5. Если один операнд типа unsigned long, то второй операнд преобразуется к типу unsigned long.

6. Если один операнд типа long, то второй операнд преобразуется к типу long.

7. Если один операнд типа unsigned int, то второй операнд преобразуется к unsigned int.

Операции дополнения

Арифметическое отрицание

Операция арифметического отрицания вырабатывает отрицание своего операнда. Операнд должен быть целой или



1 ... 14 15 16 [ 17 ] 18 19 20 ... 210

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.07
При копировании материалов приветствуются ссылки.
Яндекс.Метрика