Операторы в C
Операторы C являются подмножеством встроенных операторов C++.
Существуют три типа операторов. Унарное выражение состоит либо из унарного оператора, за которым следует операнд, либо из ключевого слова sizeof или _Alignof , за которым следует выражение. Выражением может быть либо имя переменной, либо выражение приведения типа. В последнем случае выражение должно быть заключено в круглые скобки. Бинарное выражение состоит из 2 операндов, соединенных бинарным оператором. Троичное выражение состоит из 3 операндов, соединенных оператором условного выражения.
В языке C имеются следующие унарные операторы:
Символ | name |
---|---|
— ~ ! | Операторы отрицания и дополнения |
* & | Операторы косвенного обращения и взятия адреса |
_Alignof | Оператор выравнивания (начиная с выпуска C11) |
sizeof | Оператор определения размера |
+ | Оператор унарного сложения |
++ — | Унарные операторы инкремента и декремента |
Бинарные операторы имеют левую ассоциативность, т. е. выполняются слева направо. В языке C имеются следующие бинарные операторы:
Символ | name |
---|---|
* / % | Мультипликативные операторы |
+ — | Аддитивные операторы |
>> | Операторы сдвига |
> >= == != | Реляционные операторы |
& | ^ | битовые операторы; |
&& || | Логические операторы |
, | Оператор последовательного вычисления |
Базовый оператор ( :> ), который поддерживается в предыдущих версиях компилятора Microsoft C для 16-разрядных систем, описывается в кратком обзоре синтаксиса языка C.
Оператор условного выражения имеет более низкий приоритет, чем бинарные выражения, и отличается от них тем, что имеет правую ассоциативность.
К выражениям с операторами также относятся выражения присваивания, в которых используются унарные или бинарные операторы присваивания. Унарные операторы присваивания — это операторы инкремента и декремента ( ++ и — соответственно). Бинарные операторы присваивания — это оператор простого присваивания ( = ) и составные операторы присваивания. Все составные операторы присваивания состоят из другого бинарного оператора и оператора простого присваивания.
См. также
Операторы в C
Операторы C являются подмножеством встроенных операторов C++.
Существуют три типа операторов. Унарное выражение состоит либо из унарного оператора, за которым следует операнд, либо из ключевого слова sizeof или _Alignof , за которым следует выражение. Выражением может быть либо имя переменной, либо выражение приведения типа. В последнем случае выражение должно быть заключено в круглые скобки. Бинарное выражение состоит из 2 операндов, соединенных бинарным оператором. Троичное выражение состоит из 3 операндов, соединенных оператором условного выражения.
В языке C имеются следующие унарные операторы:
Символ | name |
---|---|
— ~ ! | Операторы отрицания и дополнения |
* & | Операторы косвенного обращения и взятия адреса |
_Alignof | Оператор выравнивания (начиная с выпуска C11) |
sizeof | Оператор определения размера |
+ | Оператор унарного сложения |
++ — | Унарные операторы инкремента и декремента |
Бинарные операторы имеют левую ассоциативность, т. е. выполняются слева направо. В языке C имеются следующие бинарные операторы:
Символ | name |
---|---|
* / % | Мультипликативные операторы |
+ — | Аддитивные операторы |
>> | Операторы сдвига |
> >= == != | Реляционные операторы |
& | ^ | битовые операторы; |
&& || | Логические операторы |
, | Оператор последовательного вычисления |
Базовый оператор ( :> ), который поддерживается в предыдущих версиях компилятора Microsoft C для 16-разрядных систем, описывается в кратком обзоре синтаксиса языка C.
Оператор условного выражения имеет более низкий приоритет, чем бинарные выражения, и отличается от них тем, что имеет правую ассоциативность.
К выражениям с операторами также относятся выражения присваивания, в которых используются унарные или бинарные операторы присваивания. Унарные операторы присваивания — это операторы инкремента и декремента ( ++ и — соответственно). Бинарные операторы присваивания — это оператор простого присваивания ( = ) и составные операторы присваивания. Все составные операторы присваивания состоят из другого бинарного оператора и оператора простого присваивания.
См. также
Справочник по языку C++
В этом справочнике объясняется язык программирования C++, реализованный в компиляторе Microsoft C++. Организация основана на Справочнике по C++ с заметками Маргарет Эллис и Бьярне Струструп и международном стандарте ANSI/ISO C++ (ISO/IEC FDIS 14882). Включены реализации компонентов языка С++ корпорацией Майкрософт.
Общие сведения о современных методиках программирования на C++ см. в разделе Добро пожаловать в C++.
Для быстрого поиска ключевого слова или оператора обращайтесь к следующим таблицам:
В этом разделе
Лексические соглашения
Основные лексические элементы программ на C++: токены, комментарии, операторы, ключевые слова, знаки пунктуации, литералы. Кроме того, трансляция файлов, приоритет и ассоциативность операторов.
Основные понятия
Область, компоновка, запуск и завершение программы, классы хранения и типы.
Встроенные типы Основные типы, встроенные в компилятор C++, и их диапазоны значений.
Стандартные преобразования
Преобразования типов между встроенными типами. Кроме того, арифметические преобразования и преобразования между типами указателей, ссылочными типами и типами указателей на члены.
Объявления и определения Объявление и определение переменных, типов и функций.
Выражения
Типы выражений, семантика выражений, справочные разделы по операторам, приведению типов и операторам приведения, сведения о типах времени выполнения.
Лямбда-выражения
Метод программирования, с помощью которого неявно определяется класс объекта функции и создается объект функции этого типа класса.
Операторы
Операторы выражений, пустые операторы, составные операторы, операторы выбора, операторы итераций, операторы перехода и операторы объявления.
Классы и структуры
Вводные сведения о классах, структурах и объединениях. Кроме того, функции-члены, специальные функции-члены, элементы данных, битовые поля, this указатель, вложенные классы.
Объединения
Определяемые пользователем типы, в которых все члены имеют одно расположение в памяти.
Производные классы
Одно и несколько наследование, virtual функции, несколько базовых классов, абстрактные классы, область правила. Кроме того, ключевые __super слова и __interface .
Управление доступом к членам
Управление доступом к членам класса: public , private и ключевые protected слова. Дружественные функции и классы.
Перегрузка
Перегруженные операторы, правила для перегрузки операторов.
Обработка исключений
Обработка исключений в C++, структурированная обработка исключений (SEH), ключевые слова, используемые при написании операторов обработки исключений.
Сообщения об утверждении и User-Supplied
#error директива static_assert , ключевое слово, макрос assert .
Шаблоны
Спецификации шаблонов, шаблоны функций, шаблоны классов, typename ключевое слово, шаблоны и макросы, шаблоны и интеллектуальные указатели.
Обработка событий
Объявление событий и обработчиков событий.
Модификаторы, относящиеся к Майкрософт
Модификаторы, используемые в Microsoft C++. Адресация памяти, соглашения о вызовах, naked функции, расширенные атрибуты класса хранения ( __declspec ), __w64 .
Встроенный ассемблер
Использование языка ассемблера и C++ в __asm блоках.
Поддержка COM компилятора
Справочник по характерным для систем Microsoft классам и глобальным функциям, используемым для поддержки типов модели COM.
Нестандартное поведение
Сведения о нестандартном поведении компилятора Microsoft C++.
Добро пожаловать в C++
Обзор современных методик программирования на C++ для написания безопасных, правильных и эффективных программ.
Связанные разделы
Расширения компонентов для платформ среды выполнения
Справочные материалы по использованию компилятора Microsoft C++ для целевой платформы .NET.
Справочные сведения о сборке C/C++
Параметры компилятора, параметры компоновщика и другие средства сборки.
Справочник по препроцессору C/C++
Справочный материал по прагма-директивам, директивам препроцессора, предопределенным макросам и препроцессору.
Библиотеки Visual C++
Список ссылок на справочные начальные страницы для различных библиотек Microsoft C++.
Встроенные операторы C++, приоритет и ассоциативность
Язык C++ включает все операторы C и еще несколько новых операторов. Операторы определяют, какое вычисление следует выполнить с одним или несколькими операндами.
Очередность и ассоциативность
Приоритет операторов определяет порядок операций в выражениях, содержащих несколько операторов. Ассоциативность операторов указывает, сгруппирован ли операнд в выражении, которое содержит несколько операторов с одинаковым приоритетом, с операндом слева или с правым.
Альтернативные орфографии
C++ задает альтернативные варианты написания для некоторых операторов. В C альтернативные варианты написания предоставляются в виде макросов в заголовке . В C++ эти альтернативы являются ключевыми словами, и использование или эквивалента
Таблица приоритета и ассоциативности операторов C++
В следующей таблице показан приоритет и ассоциативность операторов C++ (в порядке убывания приоритета). Операторы с тем же номером приоритета имеют равный приоритет, если другие связи не заданы явно с помощью круглых скобок.
Описание оператора | Оператор | Альтернатива |
---|---|---|
Приоритет группы 1, без ассоциативности | ||
Разрешение области | :: | |
Приоритет группы 2, ассоциативность слева направо | ||
Выбор члена для указателей (объект или указатель) | . или -> | |
Индекс массива | [] | |
Вызов функции | () | |
Постфиксный инкремент | ++ | |
Постфиксный декремент | — | |
Имя типа | typeid | |
Постоянное преобразование типа | const_cast | |
Динамическое преобразование типа | dynamic_cast | |
Повторно интерпретируемое преобразование типа | reinterpret_cast | |
Статическое преобразование типа | static_cast | |
Приоритет группы 3, ассоциативность справа налево | ||
Размер объекта или типа | sizeof | |
Префиксный инкремент | ++ | |
Префиксный декремент | — | |
Дополнение к одному | ~ | compl |
Логическое не | ! | not |
Унарное отрицание | — | |
Унарный плюс | + | |
Взятие адреса | & | |
Косвенное обращение | * | |
Создание объекта | new | |
Уничтожение объекта | delete | |
Cast | () | |
Приоритет группы 4, ассоциативность слева направо | ||
Указатель на член (объекты или указатели) | .* или ->* | |
Приоритет группы 5, ассоциативность слева направо | ||
Умножение | * | |
Отдел | / | |
Модуль | % | |
Приоритет группы 6, ассоциативность слева направо | ||
Сложение | + | |
Вычитание | — | |
Приоритет группы 7, ассоциативность слева направо | ||
Сдвиг влево | ||
Сдвиг вправо | >> | |
Приоритет группы 8, ассоциативность слева направо | ||
Меньше чем | < | |
Больше чем | > | |
Меньше или равно | ||
Больше или равно | >= | |
Приоритет группы 9, ассоциативность слева направо | ||
Равенство | == | |
Неравенство | != | not_eq |
Приоритет ассоциативности слева направо в группе 10 | ||
Побитовое И | & | bitand |
Приоритет группы 11, ассоциативность слева направо | ||
Побитовое исключающее ИЛИ | ^ | xor |
Приоритет группы 12, ассоциативность слева направо | ||
Побитовое ИЛИ | | | bitor |
Приоритет группы 13, ассоциативность слева направо | ||
Логическое И | && | and |
Приоритет группы 14, ассоциативность слева направо | ||
Логическое ИЛИ | || | or |
Приоритет группы 15, ассоциативность справа налево | ||
Условная логика | ? : | |
Передача прав и обязанностей | = | |
Присваивание умножения | *= | |
Присваивание деления | /= | |
Назначение модуля | %= | |
Присваивание сложения | += | |
Присваивание вычитания | -= | |
Присваивание сдвига влево | < | |
Присваивание сдвига вправо | >>= | |
Назначение побитового И | &= | and_eq |
Назначение побитового включающего ИЛИ | |= | or_eq |
Назначение побитового исключающего ИЛИ | ^= | xor_eq |
Выражение Throw | throw | |
Приоритет группы 16, ассоциативность слева направо | ||
Запятая | , |