1.9 – Знакомство с литералами и операторами

Добавлено 9 апреля 2021 в 11:30

Литералы

Рассмотрим следующие два выражения:

std::cout << "Hello world!";
int x{ 5 };

Что такое "Hello world!" и 5? Это литералы. Литерал (также известный как буквальная константа) – это фиксированное значение, которое было вставлено непосредственно в исходный код.

И литералы, и переменные имеют значение (и тип). Однако значение литерала фиксировано и не может быть изменено (поэтому он называется константой), тогда как значение переменной можно изменить посредством инициализации и присваивания.

Операторы

В математике операция – это математическое вычисление, включающее ноль или более входных значений (называемых операндами), которые создают новое значение (называемое выходным значением). Конкретная выполняемая операция обозначается конструкцией (обычно символом или парой символов), называемой оператором.

Например, в детстве мы все узнали, что 2 + 3 равно 5. В этом случае литералы 2 и 3 являются операндами, а символ + – это оператор, который говорит нам применить математическое сложение к операндам для получения нового значения. 5.

Примечание автора


По причинам, которые станут понятны при более подробном обсуждении операторов, для операторов, которые являются символами, перед символом оператора принято добавлять слово operator.

Например, оператор плюса будет называться operator+, а оператор извлечения будет называться operator>>.

Вы, вероятно, уже хорошо знакомы со стандартными арифметическими операторами из использования в математике, включая сложение (+), вычитание (-), умножение (*) и деление (/). В C++ присваивание (=) также является оператором, как и << (вставка) и >> (извлечение). Некоторые операторы используют более одного символа, например оператор равенства (==), который позволяет нам сравнивать два значения, чтобы увидеть, равны ли они. Существует также ряд операторов, которые являются словами (например, new, delete и throw).

Количество операндов, которые оператор принимает в качестве входных данных, называется арностью оператора (почти никто не знает, что означает это слово, поэтому не бросайтесь им в разговоре и не ждите, что кто-нибудь поймет, о чем вы говорите). Операторы в C++ бывают трех разных типов арности:

  1. Унарные операторы действуют с одним операндом. Примером унарного оператора является оператор - (минус). Например, для заданного -5 оператор operator- принимает операнд литерала 5 и меняет его знак, чтобы получить новое выходное значение -5.
  2. Бинарные операторы действуют с двумя операндами (называемыми левым и правым). Примером бинарного оператора является оператор + (плюс). Например, для заданного 3 + 4 operator+ принимает левый операнд (3) и правый операнд (4) и применяет математическое сложение для получения нового выходного значения 7. Операторы вставки (<<) и извлечения (>>) являются бинарными операторами, принимающими std::cout или std::cin с левой стороны, а элемент для вывода или переменную для ввода с правой стороны.
  3. Тернарные операторы действуют с тремя операндами. В C++ есть только один такой, о котором мы поговорим позже.

Обратите внимание, что некоторые операторы имеют несколько значений в зависимости от того, как они используются. Например, operator- имеет два контекста. Его можно использовать в унарной форме для изменения знака числа (например, для преобразования 5 в -5, или наоборот) или в бинарной форме для вычитания (например, 4–3).

Цепочки операторов

Операторы могут быть объединены в цепочку так, чтобы выходные данные одного оператора могли использоваться в качестве входных данных для другого оператора. Например, в следующем выражении, 2 * 3 + 4, оператор умножения идет первым и преобразует левый операнд 2 и правый операнд 3 в новое значение 6 (которое становится левым операндом для оператора плюс). Затем выполняется оператор плюс, который преобразует левый операнд 6 и правый операнд 4 в новое значение 10.

Мы подробнее поговорим о порядке выполнения, когда углубимся в тему операторов. На данный момент достаточно знать, что арифметические операторы выполняются в том же порядке, что и в стандартной математике: сначала скобки, затем степени, затем умножение и деление, затем сложение и вычитание. Этот порядок иногда сокращается PEMDAS, т.е. Parenthesis (скобки), Exponents (степень), Multiplication (умножение) и Division (деление), Addition (сложение) и Subtraction (вычитание), или расширяется до мнемоники «Please Excuse My Dear Aunt Sally» («Прошу прощения, моя дорогая тетя Салли»).

Небольшой тест

Вопрос 1

Какой результат выдаст каждое из следующих выражений:

a)

std::cout << 3 + 4;

7

b)

std::cout << 3 + 4 - 5;

2

c)

std::cout << 2 + 3 * 4;

14. Умножение предшествует сложению, поэтому сначала идет 3 * 4, в результате получается результат 12. 12 + 2 равно 14.

Теги

C++ / CppLearnCppДля начинающихОбучениеОператор (программирование)Программирование

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.

В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации комментария требуется время на премодерацию.