Операторы, операции, выражения. Поверхностно, коротко, понятно. С++

Цель этой статьи познакомить читателя с некоторыми аспектами синтаксиса языка С++. Ни в коем случае выдаваемая информация не служит за единственную достоверную и однозначно не предполагается, что читатель начнёт другим людям навязывать правильные названия, которые здесь даются мной. Основной посыл самой этой статьи — это только познакомить читателя с некоторыми элементами языка, которые, если я не ошибаюсь, вызывают некоторые затруднения у многих новичков. В данном случае не столько важно давать одинаковые трактовки понятиям, сколько понимать, о чём вообще идёт речь.
Здесь только весьма поверхностное ознакомление для того, чтобы новичок вообще понимал, о чём идёт речь, если ему придётся. Тому, кто хочет понимать термины, затрагиваемые этой темой, профессионально, можно, например, написать свой транслятор. Задача не совсем для новичка. Также в статью включены некоторые концепции, которые по объективным причинами новичку только начавшему изучать язык будут незнакомы. К сожалению, я вынужден забежать наперёд, чтобы эта тема оказалась ближе к началу, чем где-нибудь в конце порядка статей.

  • Выражение — это всё, что обращается в значение:
100				(100 - само по себе значение, значит это выражение)
x = 200				(200 - выражение;
				x = 200, x обращается в значение, значит x выражение;
				x = 200 обращается в значение 200, значит x = 200 выражение)
x = 200 + 300
x = y
  • Выражение C++ — это значение или комбинация значений и операций, и каждое выражение C++ имеет свое значение.

  • Побочный эффект — это влияние на задействованные нами участки памяти. Это любое изменение состояния переменной или объекта во время вычисления выражения:


Когда в результате вычисления выражения изменяется значение данных в памяти, мы говорим или нам говорят, что вычисление дает побочный эффект.

Поскольку cout << (x = 100) не является в конечном итоге каким-то конкретным значением, то такая форма записи не является выражением, но внутри есть выражение: x = 100, — поскольку эта вот форма в конечном счёте обозначает/принимает значение 100. Если брать выражение (x = 100), то нужно понимать, что было изменено значение x, а поскольку оно, значение x, изменено в процессе выполнения операции присваивания, то случился побочный эффект.
Т. е. побочный эффект — это когда в результате каких-то вычислений происходит запись в память получаемых результатов или влияние на память при ручном управлении памятью.

Чтобы было совсем понятно: у выражения есть два вида: выражение с побочным эффектом и выражение без побочного эффекта. Выражение с побочным эффектом затрагивает состояние своего участника (например, переменную) перезаписыванием данных в память.

Термин оператор немного сложнее понять. Операторы в С++ делятся на несколько видов. Часто опускают пояснение вида оператора, обозначая оператор одним словом "оператор", поскольку подразумевается, что будет понятно, о каком именно операторе идёт речь.

Оператор-выражение
  • Оператор-выражение — это предложение компилятору выполнить вычисление показанного ему выражения. Т. е. это выражение с заканчивающим его (выражение) точкой с запятой.

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



В этом операторе может казаться, что первично присваивание в x значения 100, но первичен результат выражения, т. е. конечный результат вычисления данного выражения, который сейчас оказывается 100



Первично число 400

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

  • Если к выражению добавить точку с запятой, то суммарно выражение и точка с запятой является оператором-выражения. В этом случае точка с запятой из кода подобна точке из нашей письменности как обозначение конца предложения. Только в нашем случае вместо предложения имеется выражение, оно же — значение.

Оператор-объявления

  • Оператор объявления — это выдача нами компилятору используемых имён переменных и задание типов под обозначенные переменные.

Оператор объявления достаточно легко понять — это просто задание названия и типа переменной или обозначение вида используемой функции. Это как заявка компилятору о нашем намерении задействовать некую сущность без предварительной записи в эту сущность данных.

Оператор-инициализации

  • Оператор инициализации это — комбинация оператора-объявления с выражением. Проще говоря, это объявление переменных с моментальной в них записью некоторых значений. Обычно говорят просто "инициализация переменной", "прототип функции"

оператор-инициализации-for

  • Оператор-инициализации-for — это особый оператор, который встречается только внутри цикла-for, первым параметром. Этот оператор некоторого рода исключение из принятого подхода и одновременно и оператор-выражения, и оператор-инициализации, и оператор-объявления, т. е. может свободно принимать одну из трёх форм.

Операция

  • Операция — это некое действие над выражением. Новички часто путают операцию и оператор, что является следствием переводов слова «operation», которое в английском языке является омонимом. Наиболее простые для понимания операции — это операции сложения (+), вычитания (), умножения (*), операции сравнения, немного сложнее понимать операцию отрицания (!), операцию сдвига (>>), (<<). В общем, операция — это действие над значением или значениями.

Операции разделяют на три вида:

Операция, выполняющая действие над одним выражением. (нужно одно значение)
Операция, выполняющая действие над двумя выражениями. (нужно два значения)
Операция, выполняющая действие над тремя выражениями (нужно три значения)

Выражения, которые оказываются под влиянием операции, называют операндами. Слово операнд помогает понять, что речь идёт об участнике операции. Хотя операнды можно встречать не только в операциях. Как выражение может быть внутри оператора, так и операции внутри оператора. Оператор некоторого рода собранная деталь механизма.
Поскольку операции в С++ не ограничиваются только арифметическими действиями, их приходится разделять. Если вы понимаете то, о чём я пишу, то теперь вы легче поймёте такую тему, как перегрузка операций. Как минимум вам теперь не будут мешать одинаковые названия и вы будете понимать, что имеется в виду под перегрузкой операций. А перегрузка операций — это всего-лишь придание смысла жизни операции, т. е. научение операции действиям над значениями.



В показанном примере M является операндом и 100 является операндом, поскольку они участники операции +. Каждый операнд, в свою очередь, является выражением.
Когда вы будете читать литературу, будете часто видеть слово оператор там, где должно быть слово операция (или наоборот, или ещё как-то), но должны научиться понимать, что подразумевает контекст книги. Я очень надеюсь, что эта моя статья поможет вам быстрей сориентироваться.
В С++ встроен набор операций, собственных операций создавать нельзя. Большинство операций обозначено одним-двумя символами, но есть операции и именованные словами:

new, delete, and, or, and_eq, or_eq, bitand, xor, bitor, compl, not, not_eq, xor_eq

Ваша основная сейчас задача просто понять, что операция — это задействование одного, двух или трёх выражений-участников для получения некоторого результата здесь и сейчас. Также вам можно принять на вооружение принятые обозначения и будет легче и общаться с другими людьми, имеющими понимание, и понимать суть некоторых тем, меньше путаться. Операторы не ограничиваются операторами, упомянутыми в этой статье, предполагается, что вы сами додумаете, где имеют место операторы.

Некоторые не включенные в описание операторы:

Операторы-метки (case) и (goto) //оператор всё предложение до точки с запятой
Оператор-блок //фигурные скобки, т. е., например, блок функции {}
Оператор-выбора (if), (if-else), (switch)


Оператор-повторений, или в просторечии — цикл
Операторы-перехода:

break ;
continue ;
return … ;
goto …;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Поиск

 
     

Случайная книга в электронном формате

https://www.litres.ru/valeriy-laptev/c-ekspress-kurs/?lfrom=15589587

Последние комментарии

Яндекс.Метрика