Простые операторы с кратко

Обновлено: 04.07.2024

Оператор – это наименьшая автономная часть языка программирования, команда. Сегодня мы узнаем какие есть операторы в языке программирования Си.

Все операторы языка СИ разделены на категории:

  • условные операторы, к которым относятся оператор условия if и оператор выбора switch;
  • операторы цикла (for,while,do while);
  • операторы перехода (break, continue, return, goto);
  • Логические операторы (И, ИЛИ, НЕ);
  • другие операторы (оператор “выражение”, пустой оператор);
  • Составные операторы.

Все операторы языка СИ, кроме составных операторов, заканчиваются точкой с запятой “;”.

Условный оператор if

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


Полная развилка


Неполная развилка

В случае полной развилки если условие истинно, то выполняется блок операций 1, иначе выполняется блок операций 2.

В случае неполной развилки если условие истинно, то блок операций выполняется, если условие ложно, то блок операций не выполняется.

Пример использование оператора:

Напишите данный код в свой компилятор и запустите, после ввода числа k оператор выведит, то условие, которое подходит для введеного числа (больше или меньше) вот так и работает данный оператор.

Оператор множественного выбора switch

Оператор if позволяет осуществить выбор только между двумя вариантами. Для того, чтобы производить выбор одного из нескольких вариантов необходимо использовать вложенный оператор if. С этой же целью можно использовать оператор ветвления switch.

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

  • вычисляется целочисленное выражение в скобках оператора switch;
  • полученное значение сравнивается с метками (константами) в опциях case, сравнение производится до тех пор, пока не будет найдена метка, соответствующая вычисленному значению целочисленного выражения;
  • выполняется оператор соответствующей метки case;
  • если соответствующая метка не найдена, то выполнится оператор в опции default.

Опция break; осуществляет выход из оператора switch и переход к следующему за ним оператору. При отсутствии опции break будут выполняться все операторы, начиная с помеченного данной меткой и кончая оператором в опции default.

Оператор for

Оператор for – это наиболее общий способ организации цикла.

Выражение 1 обычно используется для установления начального значения переменных, управляющих циклом. Выражение 2 – это выражение, определяющее условие, при котором тело цикла будет выполняться. Выражение 3 определяет изменение переменных, управляющих циклом после каждого выполнения тела цикла.

В следующем примере вычисляются квадраты чисел от 1 до 9 с помощью оператора for:

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

Оператор while

Оператор цикла while называется циклом с предусловием. Его синтаксис:

Выражение в скобках может принимать ненулевое (истинное) или нулевое (ложное) значение. Если оно истинно, то выполняется тело цикла и выражение вычисляется снова. Если выражение ложно, то цикл while заканчивается. Оператор while удобно использовать в ситуациях, когда тело оператора не всегда нужно выполнять.

Оператор do while

Основным отличием между циклами while и do – while является то, что тело в цикле do – while выполняется по крайней мере один раз. Тело цикла будет выполняться до тех пор, пока выражение в скобках не примет ложное значение. Если оно ложно при входе в цикл, то его тело выполняется ровно один раз. Его синтаксис:

Чтобы прервать выполнение цикла до того, как условие станет ложным, можно использовать оператор break.

Оператор continue

Оператор continue, как и оператор break, используется только внутри операторов цикла, но в отличие от него выполнение программы продолжается не с оператора, следующего за прерванным оператором, а с начала прерванного оператора. Пример оператора:

Когда сумма чисел от 1 до а становится нечетной, оператор continue передает управление на очередную итерацию цикла for, не выполняя операторы обработки четных сумм.

Оператор return

Оператор return завершает выполнение функции, в которой он задан, и возвращает управление в вызывающую функцию, в точку, непосредственно следующую за вызовом. Использование оператора return необходимо либо для немедленного выхода из функции, либо для передачи возвращаемого значения. Пример оператора:

Функция sum имеет два формальных параметра a и b типа int, и возвращает значение типа int. Возвращаемое оператором return значение равно сумме фактических параметров.

Оператор goto

Оператор goto передает управление на оператор, помеченный меткой имя-метки. Помеченный оператор должен находиться в той же функции, что и оператор goto, а используемая метка должна быть уникальной, т.е. одно имя-метки не может быть использовано для разных операторов программы. Имя-метки – это идентификатор.

Использование оператора безусловного перехода goto в практике программирования на языке Си не рекомендуется, так как он затрудняет понимание программ и возможность их модификаций.

Оператор break

Оператор break обеспечивает прекращение выполнения самого внутреннего из объединяющих его операторов switch, do, for, while. После выполнения оператора break управление передается оператору, следующему за прерванным.

Логические операторы

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

Оператор НЕ (NOT, Логическое отрицание) используется для того, чтобы инвертировать значение аргумента. т.е., если ему передали истину, то он вернёт ложь, если получил ложь в качестве аргумента, то вернёт истину. В Си отрицание представлено оператором !. Например:

Оператор И (AND, логическое умножение) возвращает истину тогда и только тогда, когда оба аргумента являются истиной. В Си логическое умножение представлено оператором &&.

Оператор логическое ИЛИ (логическое сложение, OR) истинен тогда, когда истиной является хотя бы один его аргумент. В Cи ИЛИ представлен оператором ||.

Оператор “выражение”

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

Пустой оператор

Пустой оператор состоит только из точки с запятой. При выполнении этого оператора ничего не происходит. Он обычно используется в операторах do, for, while, if в строках, когда место оператора не требуется, но по синтаксису требуется хотя бы один оператор и при необходимости пометить фигурную скобку.

Составной оператор

Составной оператор представляет собой несколько операторов и объявлений, заключенных в фигурные скобки:

Выполнение составного оператора заключается в последовательном выполнении составляющих его операторов.

На этом наш урок по операторам языка Си закончен. Маленький совет от меня – занимайтесь практикой “программируйте” всегда и везде и у Вас все получиться. Удачи!

В этом руководстве мы узнаем о различных типах операторов в C++ с помощью примеров. В программировании оператор – это символ, который работает со значением или переменной.

Например, + – это оператор, используемый для сложения, а – – оператор, используемый для вычитания.

Операторы в С++ можно разделить на 6 типов:

  1. Арифметические;
  2. Операторы присваивания;
  3. Операторы отношения;
  4. Логические;
  5. Побитовые;
  6. Другие.

1. Арифметические операторы

Арифметические операторы используются для выполнения арифметических операций с переменными и данными. Например:

Здесь оператор + используется для добавления двух переменных a и b . Точно так же в С++ есть и другие арифметические операторы.

Оператор Операция
+ Дополнение
Вычитание
* Умножение
/ Деление
% Операция по модулю (остаток после деления)

Пример 1

Здесь операторы +, – и * вычисляют сложение, вычитание и умножение соответственно, как мы могли ожидать.

Оператор деления /

Обратите внимание на операцию (a / b) в нашей программе. Оператор / является оператором деления.

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

Оператор по модулю %

Оператор по модулю % вычисляет остаток. Когда a = 9 делится на b = 4, остаток равен 1.

Примечание. Оператор % можно использовать только с целыми числами.

Операторы увеличения и уменьшения

C++ также предоставляет операторы увеличения и уменьшения: ++ и – соответственно. ++ увеличивает значение операнда на 1, а – уменьшает его на 1.

Здесь значение num увеличивается до 6 с его начального значения 5.

Пример 2

В приведенной выше программе мы использовали операторы ++ и – в качестве префиксов. Мы также можем использовать эти операторы как постфиксные.

Есть небольшая разница, когда эти операторы используются в качестве префикса, по сравнению с тем, когда они используются в качестве постфикса.

2. Операторы присваивания

В C++ операторы присваивания используются для присвоения значений переменным. Например:

Здесь мы присвоили переменной a значение 5.

Оператор пример Эквивалентно
= a = b; a = b;
+ = a += b; a = a + b;
-= a -= b; a = a – b;
*= a *= b; a = a * b;
/= a /= b; a = a / b;
%= a %= b; a = a % b;

Пример

3. Операторы отношения

Оператор отношения используется для проверки связи между двумя операндами. Например:

Здесь > – оператор отношения. Он проверяет, больше ли a чем b или нет.

Если отношение true, оно возвращает 1, тогда как если отношение false, оно возвращает 0.

4. Логические

Логические операторы используются для проверки того, является ли выражение true или false. Если выражение true, оно возвращает 1, тогда как если выражение false, оно возвращает 0.

Оператор пример Смысл
&& выражение 1 && выражение 2 Логическое AND. True, только если все операнды верны.
|| выражение1 || выражение2 Логическое OR. True, если хотя бы один из операндов True.
! ! выражение Логическое NOT. True, только если операнд false.

В С++ логические операторы обычно используются при принятии решений. Чтобы лучше понять, давайте посмотрим на следующие примеры:

Пример

Пояснение к программе логического оператора:

  • (3! = 5) (3 5) оценивается как 0, потому что оба операнда (3 == 5) и (3> 5) равны 0 (false).
  • (3! = 5) || (3 5) оценивается как 1, потому что операнд (3! = 5) равен 1 (true).
  • (3 == 5) || (3> 5) оценивается как 0, потому что оба операнда (3 == 5) и (3> 5) равны 0 (false).
  • ! (5 == 2) оценивается как 1, потому что операнд (5 == 2) равен 0 (false).
  • ! (5 == 5) оценивается как 0, потому что операнд (5 == 5) равен 1 (true).

5. Побитовые

В C++ побитовые операторы используются для выполнения операций с отдельными битами. Их можно использовать только вместе с типами данных char и int.

Оператор Описание
& Двоичное AND
| Двоичное OR
^ Двоичный XOR
~ Двоичное дополнение
> Двоичный сдвиг вправо

Помимо описанных выше операторов, есть несколько других операторов, таких как sizeof. и т.д., которые нельзя аккуратно отнести к тому или иному типу.

Операторы C являются подмножеством встроенных операторов C++.

Существуют три типа операторов. Унарное выражение состоит либо из унарного оператора, который стоит перед операндом, либо из ключевого слова sizeof , за которым следует выражение. Выражением может быть либо имя переменной, либо выражение приведения типа. В последнем случае выражение должно быть заключено в круглые скобки. Бинарное выражение состоит из 2 операндов, соединенных бинарным оператором. Троичное выражение состоит из 3 операндов, соединенных оператором условного выражения.

В языке C имеются следующие унарные операторы:

Символ name
-~- Операторы отрицания и дополнения
* & Операторы косвенного обращения и взятия адреса
sizeof Оператор определения размера
+ Оператор унарного сложения
++ -- Унарные операторы инкремента и декремента

Бинарные операторы имеют левую ассоциативность, т. е. выполняются слева направо. В языке C имеются следующие бинарные операторы:

Это описание интересно также и с исторической точки зрения и для понимания того, как далеко ушел язык Си с момента своего рождения и IT-отрасль в целом.

Хочу сразу оговориться, что мой второй язык французский:

image

Но это компенсируется 46-летним программистским стажем.
Итак, приступим, наступила очередь Эндрю Таненбаума.

Введение в язык Си (стр. 350 — 362)


Язык программирования Cи был создан Деннисом Ритчи из AT&T Bell Laboratories как язык программирования высокого уровня для разработки операционной системы UNIX. В настоящее время язык широко используется в различных областях. C особенно популярен у системных программистов, потому что позволяет писать программы просто и кратко.

В этом приложении мы попытаемся дать достаточно полное введение в Cи, так что те кто знаком с языками высокого уровня, такими как Pascal, PL/1 или Modula 2, смогут понять большую часть кода MINIX, приведенного в этой книге. Особенности Cи, которые не используются в MINIX, здесь не обсуждаются. Многочисленные тонкие моменты опущены. Акцент делается на чтении программ на Си, а не на написании кода.

А.1. Основы языка Си

Программа на Cи состоит из набора процедур (часто называемых функциями, даже если они не возвращают значений). Эти процедуры содержат объявления, операторы и другие элементы, которые вместе говорят компьютеру что надо делать. На рисунке A-1 показана небольшая процедура, в которой объявляются три целочисленные переменные и присваиваются им значения. Имя процедуры — main (главная). Процедура не имеет формальных параметров, на что указывает отсутствие каких-либо идентификаторов между скобками за именем процедуры. Тело процедуры заключено в фигурные скобки ( < >). Этот пример показывает, что Cи имеет переменные, и что эти переменные должны быть объявлены до использования. Cи также имеет операторы, в этом примере это операторы присваивания. Все операторы должны заканчиваться точкой с запятой (в отличие от Паскаля, который использует двоеточия между операторами, а не после них).


Процедура содержит три константы. Константа 10 в первом присваивании
это обычная десятичная константа. Константа 015 является восьмеричной константой
(равно 13 в десятичной системе счисления). Восьмеричные константы всегда начинаются с начального нуля. Константа 0xFF является шестнадцатеричной константой (равной 255 десятичной). Шестнадцатеричные константы всегда начинаются с 0x. Все три типа используются в Cи.

А.2. Основные типы данных

Cи имеет два основных типа данных (переменных): целое и символ, объявляемые как int и char, соответственно. Нет отдельной булевой переменной. В качестве булевой переменной используется переменная int. Если эта переменная содержит 0, то это означает ложь/false, а любое другое значение означает истина/true. Cи также имеет и типы с плавающей точкой, но MINIX не использует их.

Спецификатор register также допускается как для int, так и для char, и является подсказкой для компилятора, что объявленную переменную стоит поместить в регистр, чтобы программа работала быстрее.

Некоторые объявления показаны на рис. А — 2.


Преобразование между типами разрешено. Например, оператор


разрешен, даже если i имеет тип int, а flag_pole — long. Во многих случаях
необходимо или полезно принудительно проводить преобразования между типами данных. Для принудительного преобразования достаточно поставить целевой тип в скобках перед выражением для преобразования. Например:


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

При преобразовании между типами следует обратить внимание на знак.
При преобразовании символа в целое число некоторые компиляторы обрабатывают символы как знаковые, то есть от — 128 до +127, тогда как другие рассматривают их как
без знака, то есть от 0 до 255. В MINIX часто встречаются такие выражения, как

А.3. Составные типы и указатели

В этом разделе мы рассмотрим четыре способа построения более сложных типов данных: массивы, структуры, объединения и указатели (arrays, structures, unions, and pointers). Массив — это коллекция/множество элементов одного типа. Все массивы в Cи начинаются с элемента 0.


объявляет массив a с 10 целыми числами, которые будут хранится в элементах массива от [0] до a [9]. Второе, массивы могут быть трех и более измерений, но они не используются в MINIX.
Структура — это набор переменных, обычно разных типов. Структура в Cи похож на record в Паскале. Оператор


объявляет s как структуру, содержащую два члена, целое число i и символ c.

Чтобы присвоить члену i структуры s значение 6, нужно записать следующее выражение:


где оператор точка указывает, что элемент i принадлежит структуре s.
Объединение — это также набор членов, аналогично структуре, за исключением того, что в любой момент в объединение может находится только один из них. Объявление

Указатели используются для хранения машинных адресов в Cи. Они используются очень и очень часто. Символ звездочка (*) используется для обозначения указателя в объявлениях. Объявление


объявляет целое число i, указатель на целое число pi, массив a из 10 элементов, массив b из 10 указателей на целые числа и указатель на указатель ppi на целое число.

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

На рисунке A-3 показано объявление массива z структур struct table, каждая из которых имеет
три члена, целое число i, указатель cp на символ и символ с.


Массивы структур распространены в MINIX. Далее, имя table можно объявить как структуру struct table, которую можно использовать в последующих объявлениях. Например,


объявляет p указателем на структуру struct table и предлагает сохранить ее
в register. Во время выполнения программы p может указывать, например, на z [4] или
на любой другой элемент в z, все 20 элементов которой являются структурами типа struct table.

Чтобы сделать p указателем на z [4], достаточно написать


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


Разница в том, что z [4] является структурой, и оператор точки выбирает элементы
из составных типов (структуры, массивы) напрямую. С помощью указателей мы не выбираем участника напрямую. Указатель предписывает сначала выбрать структуру и только потом выбрать члена этой структуры.

Иногда удобно дать имя составному типу. Например:


определяет unshort как unsigned short (короткое целое число без знака). Теперь unshort может быть использован в программе как основной тип. Например,


объявляет короткое целое число без знака, указатель на короткое целое число без знака и
массив коротких целых без знака.

А.4. Операторы

Процедуры в Cи содержат объявления и операторы. Мы уже видели объявления, так что теперь мы будем рассматривать операторы. Назначение условного оператора и операторов цикла по существу такие же, как и в других языках. Рисунок А – 4 показывает несколько примеров из них. Единственное, на что стоит обратить внимание, это то, что фигурные скобки используются для группировки операторов, а оператор while имеет две формы, вторая из которых похожа на оператор repeat Паскаля.

Cи также имеет оператор for, но он не похож на оператор for в любом другом языке. Оператор for имеет следующий вид:


Тоже самое можно выразить через опертор while:


В качестве примера рассмотрим следующий оператор:


Этот оператор устанавливает первые n элементов массива a равными нулю. Выполнение оператора начинается с установки i в ноль (это делается вне цикла). Затем оператор повторяется до тех пор, пока i похожи на своих аналогов в других языках. Оператор %
используется по модулю. Стоит отметить, что оператор равенства это ==, а оператор неравенства это! =. Чтобы проверить равны ли a и b, можно написать так:


Си также позволяет объединять оператор присваивания с другими операторами, поэтому


Другие операторы также могут быть объединены таким образом.

Си имеет операторы для манипулирования битами слова. Разрешены как сдвиги, так и побитовые логические операции. Операторы сдвига влево и вправо являются > соответственно. Побитовые логические операторы &, | и ^, которые являются логическим И (AND), включающим ИЛИ (OR) и исключающим ИЛИ (XOP) соответственно. Если i имеет значение 035 (восьмеричное), тогда выражение i & 06 имеет значение 04 (восьмеричное). Еще один пример, если i = 7, то


и получим 074 для j.
Другой важной группой операторов являются унарные операторы, каждый из которых принимает только один операнд. Как унарный оператор, амперсанд & получает адрес переменной.

Если p является указателем на целое число, а i является целым числом, оператор


вычисляет адрес i и сохраняет его в переменной p.
Противоположным взятию адреса является оператор, который принимает указатель в качестве входных данных и вычисляет значение, находящееся по этому адресу. Если мы только что присвоили адрес i указателю p, тогда *p имеет то же значение, что и i.

Другими словами, в качестве унарного оператора за звездочкой следует указатель (или
выражение, дающее указатель), и возвращает значение элемента, на который указывает. Если i имеет значение 6, то оператор


присвоит j число 6.
Оператор! (восклицательный знак – оператор отрицания) возвращает 0, если его операнд отличен от нуля, и 1, если его оператор равен 0.

Он в основном используется в операторах if, например


проверяет значение х. Если x равен нулю (false), то k присваивается значение 0. В действительности, оператор! отменяет условие, следующее за ним, так же, как оператор not в Паскаль.

Оператор ~ является побитовым оператором дополнения. Каждый 0 в своем операнде
становится 1, а каждый 1 становится 0.

Оператор sizeof сообщает размер его операнда в байтах. Применительно к
массиву из 20 целых чисел a на компьютере с 2-байтовыми целыми числами, например sizeof a будет иметь значение 40.

Последняя группа операторов — это операторы увеличения и уменьшения.


означает увеличение р. На сколько увеличится p, зависит от его типа.
Целые числа или символы увеличиваются на 1, но указатели увеличиваются на
размер объекта, на который указывает Таким образом, если а является массивом структур, а р указатель на одну из этих структур, и мы пишем


чтобы заставить p указать на одну из структур в массиве, то после увеличения p
будет указывать на a[4] независимо от того, насколько велики структуры. Оператор


аналогичен оператору p++, за исключением того, что он уменьшает, а не увеличивает значение операнда.


где обе переменные являются целыми числами, исходное значение k присваивается n и
только после этого происходит увеличение k. В операторе


сначала увеличивается k, затем его новое значение сохраняется в n.

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

Последний оператор – это? (знак вопроса), который выбирает одну из двух альтернатив
разделеных двоеточием. Например, оператор,


сравнивает х с у. Если x меньше y, тогда i получает значение 6; в противном случае переменная i получает значение k + 1. Скобки не обязательны.

А.6. Структура программы

Допускается объявлять переменные вне процедур, например, в начале файла перед первым объявлением процедуры. Эти переменные являются глобальными, и могут использоваться в любой процедуре во всей программе, если только ключевое слово static не предшествует объявлению. В этом случае эти переменные нельзя использовать в другом файле. Те же правила применяются к процедурам. Переменные, объявленные внутри процедуры, являются локальными для процедуры.
Процедура может обращаться к целочисленной переменной v, объявленной в другом файле (при условии, что переменная не является статической), объявляя ее у себя внешней:


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

Переменные могут быть инициализированы при объявлении:


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

А.7. Препроцессор Cи

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

1. Включение файлов.
2. Определение и замена макросов.
3. Условная компиляция.


то включаемый файл ищется в каталоге /usr/include вместо рабочего каталога. В Cи распространена практика группировать объявления, используемые несколькими файлами, в заголовочном файле (обычно с суффиксом .h), и включать их там, где они необходимы.
Препроцессор также позволяет определения макросов. Например,

Третья особенность препроцессора — условная компиляция. В MINIX есть несколько
мест, где код написан специально для процессора 8088, и этот код не должен включаться при компиляции для другого процессора. Эти разделы выглядят как так:


или включив в программу заявление


мы определяем символ i8088, поэтому весь зависимый код для 8088 быть включен. По мере развития MINIX он может приобрести специальный код для 68000s и других процессоров, которые будут обрабатываться также.

В качестве примера того, как работает препроцессор, рассмотрим программу рис. A-7 (a). Она включает в себя один файл prog.h, содержимое которого выглядит следующим образом:


Представьте, что компилятор был вызван командой


После того, как файл прошел через препроцессор, вывод будет таким, как показано на Рис. A-7 (b).

Именно этот вывод, а не исходный файл, дается как вход в Cи компилятор.


то была бы включена другая печать. Если бы он был вызван вот так:


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

А.8. Идиомы

В этом разделе мы рассмотрим несколько конструкций, которые характерны для Cи, но не распространены в других языках программирования. Для начала рассмотрим петлю:


Переменные p и q обычно являются символьными указателями, а n является счетчиком. Цикл копирует n-символьную строку из места, на которое указывает q, в место, на которое указывает р. На каждой итерации цикла счетчик уменьшается, пока он не доходит до 0, и каждый из указателей увеличивается, поэтому они последовательно указывают на ячейки памяти с более высоким номером.

Еще одна распространенная конструкция:


которая устанавливает первые N элементов а в 0. Альтернативный способ написания этого цикла выглядит так:


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

Операторы присвоения могут появляться в неожиданных местах. Например,


сначала вызывает функцию f, затем присваивает результат вызова функции a и
наконец, проверяет, является ли оно истинным (ненулевым) или ложным (нулевым). Если а не равно нулю, то условие выполнено. Оператор


также сначало значение переменной b переменной a, а затем проверяет a, не является ли значение ненулевым. И этот оператор полностью отличается от


который сравнивает две переменные и выполняет оператор, если они равны.

Послесловие


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

Читайте также: