|
Программирование >> Перегруженные имена функций и идентификаторы
Выражения в скобках Любой операнд может быть заключен в скобки. Они не влияют на тип и значение выражения, заключенного в скобки. Например, в выражении (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. Операции дополнения Арифметическое отрицание Операция арифметического отрицания вырабатывает отрицание своего операнда. Операнд должен быть целой или
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |