10 основных конструкций языка C: основы программирования

C++
Содержание
  1. Операторы
  2. 19.1 Расширения
  3. Операторы в С++
  4. Что такое операторы в С++?
  5. Стандартные операторы C++.
  6. Мы будем наблюдать за этими операторами:
  7. Операторы присваивания
  8. = (равно)
  9. -= (минус равно)
  10. %= (по модулю равно)
  11. Арифметический оператор
  12. Операторы инкремента и декремента в С++
  13. Смешанные выражения
  14. Проверка на равенство С++
  15. Реляционные операторы в С++
  16. Реляционные операторы в С++
  17. Логические операторы
  18. Операторы доступа к членам
  19. # Relational Operators
  20. Equals «==»
  21. Not equals «!=»
  22. Not «!»
  23. # Comma Operator
  24. Дополнительные операторы
  25. 1. C break
  26. 2. C continue
  27. 3. C goto
  28. 4. C return
  29. Решения в программировании
  30. Немногоwise Операторы
  31. Приоритеты операторов в C ++
  32. Операторы цикла
  33. 10.1 Определения функций
  34. Операторы условных и безусловных переходов
  35. Логические операции в C++
  36. # Pointer Arithmetic
  37. Pointer addition
  38. Pointer subtraction
  39. 1.4.1. Оператор выражение
  40. Операторы отношения
  41. Операторы ветвления:
  42. Оператор «if», «else»:
  43. Пример:
  44. Оператор «?»:
  45. Пример:
  46. Оператор «switch»:
  47. Пример:
  48. Другие операторы

Операторы

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

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

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

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

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

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

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

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

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

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

19.1 Расширения

Типы параметров функции могут быть заданы () и будут проверяться (). Могут выполняться преобразования типов.

Для выражений с числами с плавающей точкой может использоваться
плавающая арифметика одинарной точности;

Имена функций могут быть перегружены;

Операции могут быть перегружены; ,

Может осуществляться inline-подстановка функций;

Объекты данных могут быть константными (const);

Могут быть описаны объекты ссылочного типа; ,

Операции new и delete обеспечивают свободное хранение в памяти;
#17.

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

Имя класса является именем типа;

Любой указатель может присваиваться void* без
приведения типов;


Назад |

Операторы в С++

Что такое операторы в С++?

Операторы в C++ — это символы, которые мы используем, чтобы сообщить компилятору, какой тип операции выполнять. Это символы, которые используются для управления значениями.Операторы — это символы, которые мы используем для манипулирования числами в С++. Есть два типа: унарный и бинарный. Унарные операции требуют только одного операнда, а бинарные операции требуют двух операндов.

Стандартные операторы C++.

Мы будем наблюдать за этими операторами:

     Арифметические операторы Операторы отношения Логические операторы Операторы присваивания Операторы инкремента/декремента             Операторы доступа к членам

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

Операторы присваивания — это способ присвоения значений переменным. Операторы присваивания используются в языки программирования чтобы присвоить значение переменная.

Переменные — это контейнеры, содержащие данные, которым пользователь может присваивать значения. Данные могут быть любыми из букв, цифр и текстовых строк. Переменным можно присвоить любое значение, введенное в код программиста. Некоторые распространенные операторы присваивания:

  • = (равно)
  • += (плюс равно)
  • -= (минус равно)
  • *= (раз равно)
  • /= (делит равно)

= (равно)

В C++ знак равенства (=) используется для присвоения значения переменной. Знак равенства может использоваться для присвоения результата арифметического выражения, например: int x = 5 + 4; // присваивает значение 9 переменной xint y = 5 * 4; // присваивает значение 20 переменной y

-= (минус равно)

В C++ знаки минус и равенство используются для выполнения арифметических операций. Следующие строки показывают, как вы можете использовать -= в C++:int x = 10;x -= 5; // x теперь содержит 5x = x + 4; // x теперь содержит 9

%= (по модулю равно)

Строка ниже показывает, как вы можете использовать %= в C++: %=x %= y;x = x % y;

Арифметический оператор


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

  • Дополнение: +
  • Вычитание: –
  • Умножение: *
  • Разделение: /
  • Возведение в степень: ^

Операторы инкремента и декремента в С++

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

Операторы инкремента и декремента используются для изменения значения переменной на заданное число.

Оператор приращения записывается как ++. Это означает, что переменная должна быть увеличена на единицу. Оператор декремента записывается как — означает, что переменная должна быть уменьшена на единицу.

Смешанные выражения

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

Проверка на равенство С++

Оператор == сравнивает два операнда, чтобы определить, равны ли они. Если два операнда имеют одинаковый тип, они равны, если имеют одинаковое значение.

Оператор == является эквивалентностью отношение, удовлетворяющее следующим свойствам: рефлексивное, симметричное и транзитивное. Распространенной ошибкой является использование оператора = вместо оператора == при проверке на равенство в C++.

Целью оператора != является сравнение операндов на неравенство. Если операнды не равны, то возвращается логическое значение true.

Реляционные операторы в С++

Операторы отношения используются для сравнения двух операндов и возврата логического значения.

Реляционные операторы в С++

> (больше)< (меньше)>= (больше или равно)<= (меньше или равно).<=> (трехстороннее сравнение космических кораблей (C++20).

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

логический Операторы в C ++ следующие:

  • Логический оператор НЕ !
  • Логический оператор И &&
  • Логический оператор ИЛИ ||

Логические НЕ, И и ИЛИ — это бинарные операторы, которые работают с двумя операндами. Действие этих трех операторов можно резюмировать следующим образом:

  • НЕ(А) = !А;
  • И(А И В) = А && В;
  • ИЛИ(А ИЛИ В) = А || Б;

Операторы доступа к членам

Оператор доступа к членам — это особый тип оператора, который используется для доступа к членам класса. Это можно сделать с помощью оператора стрелки (->)

Приоритет оператора — это набор правил, определяющих порядок, в котором должно оцениваться выражение. Эти правила применяются ко всем выражениям в операторе, включая математические выражения.

# Relational Operators

Relational operators check if a specific relation between two operands is true. The result is evaluated to 1 (which means true) or 0 (which means false). This result is often used to affect control flow (via , , ), but can also be stored in variables.

Equals «==»

Checks whether the supplied operands are equal.

Attention: This operator should not be confused with the assignment operator ()!

Not equals «!=»

Checks whether the supplied operands are not equal.

This operator effectively returns the opposite result to that of the equals () operator.

Not «!»

Check whether an object is equal to .

The can also be used directly with a variable as follows:

This has the same effect as:

# Comma Operator

Evaluates its left operand, discards the resulting value, and then evaluates its rights operand and result yields the value of its rightmost operand.

The comma operator introduces a sequence point(opens new window) between its operands.

Note that the comma used in functions calls that separate arguments is NOT the comma operator, rather it’s called a separator which is different from the comma operator. Hence, it doesn’t have the properties of the comma operator.

The above call contains both the comma operator and the separator.

The comma operator is often used in the initialization section as well as in the updating section of a loop. For example:

Дополнительные операторы

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

1. C break

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

Синтаксис:

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

В языке C:

В языке C++:

Вывод:

2. C continue

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

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

Синтаксис:

В языке C:

В языке C++:

Вывод:

3. C goto

Оператор goto в C/C++, также называемый оператором безусловного перехода, может использоваться для перехода из одной точки в другую внутри функции.

Синтаксис:

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

Оператор, следующий сразу за — это оператор назначения. также может появиться перед оператором в приведенном выше синтаксисе.

Блок-схема:

Ниже приведены примеры использования оператора .

В языке C:

В языке C++:

Вывод:

4. C return

в C или C++ возвращает поток выполнения функции, из которой он вызывается. Это утверждение не обязательно требует каких-либо условных операторов.

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

Оператор return может возвращать или не возвращать что-либо для -функции, но для не—функции необходимо вернуть возвращаемое значение.

Синтаксис:

В языке C:

В языке C++:

Вывод:

Решения в программировании

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

Аналогичные ситуации возникают и в программировании, когда необходимо принять какие-то решения и на их основе выполнить следующий блок кода. Например, в C, если произойдет x, то выполните y, иначе выполните z.

Также может быть несколько условий, как в Си, если x, то выполните p, иначе, если y, то выполните q, иначе выполните r. Это условие C else…if является одним из многих способов ввода нескольких условий.

Ниже мы рассмотрим основные операторы для выполнения нужных блоков кода.

Немногоwise Операторы

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

оператор Описание
& (кусочекwise И). Требуется два числа (операнда), а затем выполняется AND для каждого бита двух чисел. Если оба равны 2, И возвращает 1, другоеwise 0.
| (кусочекwise ИЛИ) Принимает 2 числа (операнда), а затем выполняет ИЛИ для каждого бита двух чисел. Он возвращает 1, если один из битов равен 1.
^ (битwise исключающее ИЛИ) Принимает 2 числа (операнда), а затем выполняет XOR для каждого бита 2 чисел. Он возвращает 1, если оба бита различны.
<< (сдвиг влево) Принимает два числа, затем сдвигает влево биты первого операнда. Второй операнд определяет общее количество мест для сдвига.
>> (правый сдвиг) Принимает два числа, затем сдвигает вправо биты первого операнда. Второй операнд определяет количество мест для сдвига.
~ (битwise НЕТ). Берет число, а затем инвертирует все его биты.
#include <iostream>
using namespace std;

int main() {
	unsigned int p = 60;	  // 60 = 0011 1100  
	unsigned int q = 13;	  // 13 = 0000 1101
	int z = 0;

	z = p & q;
	cout << "p&q is : " << z << endl; // 12 = 0000 1100

	z = p | q;
	cout << "p|q is : " << z << endl; // 61 = 0011 1101

	z = p ^ q;
	cout << "p^q is : " << z << endl; // 49 = 0011 0001

	z = ~p;
	cout << "~p is : " << z << endl; // -61 = 1100 0011

	z = p << 2;
	cout << "p<<2 is: " << z << endl; // 240 = 1111 0000

	z = p >> 2;
	cout << "p>>2 is : " << z << endl; // 15 = 0000 1111

	return 0;
}

Вывод:

Вот скриншот кода:

Пояснение к коду:

  1. Включение заголовочного файла iostream в наш код. Это позволит нам читать и писать в консоль.
  2. Включая пространство имен std, чтобы использовать его классы и функции без его вызова.
  3. Вызов функции main(), внутри которой должна быть добавлена ​​логика программы. { отмечает начало тела функции main().
  4. Объявление беззнаковой целочисленной переменной p и присвоение ей значения 60, то есть 0011 1100 в двоичном формате.
  5. Объявление беззнаковой целочисленной переменной q и присвоение ей значения 13, то есть 0000 1101 в двоичном формате.
  6. Объявление целочисленной переменной z и инициализация ее значением 0.
  7. Выполнение битаwise Операция & (И) над переменными p и q и сохранение результата в переменной z.
  8. Печать результата вышеуказанной операции на консоли вместе с другим текстом.
  9. Выполнение битаwise | (ИЛИ) операция над переменными p и q и сохранение результата в переменной z.
  10. Печать результата вышеуказанной операции на консоли вместе с другим текстом.
  11. Выполнение битаwise ^ (XOR) операция над переменными p и q и сохранение результата в переменной z.
  12. Печать результата вышеуказанной операции на консоли вместе с другим текстом.
  13. Выполнение битаwise ~ (НЕ) операция над переменными p и q и сохранение результата в переменной z.
  14. Печать результата вышеуказанной операции на консоли вместе с другим текстом.
  15. Выполнение операции сдвига влево над переменной p и сохранение результата в переменной z.
  16. Печать результата вышеуказанной операции на консоли вместе с другим текстом.
  17. Выполнение операции сдвига вправо над переменной p и сохранение результата в переменной z.
  18. Печать результата вышеуказанной операции на консоли вместе с другим текстом.
  19. Функция main() должна возвращать значение, если программа работает нормально.
  20. Конец тела функции main().

Приоритеты операторов в C ++

Приоритет оператора определяет группировку терминов в выражении. Это влияет на оценку выражения. Некоторые операторы имеют более высокий приоритет, чем другие; например, оператор умножения имеет более высокий приоритет, чем оператор сложения —

Например, x = 7 + 3 * 2; здесь x назначается 13, а не 20, потому что оператор * имеет более высокий приоритет, чем +, поэтому он сначала умножается на 3 * 2, а затем добавляется в 7.

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

Категория  Оператор  Ассоциативность 
постфикс  () [] ->. ++ — —   Слева направо 
Одинарный  + -! ~ ++ — — (тип) * & sizeof  Справа налево 
Multiplicative   * /%  Слева направо 
присадка   + —  Слева направо 
сдвиг   << >>  Слева направо 
реляционный   <<=>> =  Слева направо 
равенство   ==! =  Слева направо 
Побитовое AND  Слева направо 
Побитовое XOR  Слева направо 
Побитовое OR  Слева направо 
Логические AND  &&  Слева направо 
Логический OR  ||  Слева направо 
условный  ?:  Справа налево 
присваивание  = + = — = * = / =% = >> = << = & = ^ = | =  Справа налево 
запятая  Слева направо

Операторы цикла

Циклы организуются, чтобы выполнить некоторый оператор или группу операторов определенное число раз. В языке СИ (C)три оператора цикла: for, while и do — while. Первый из них формально записывается, в следующем виде:
for (выражение_1; выражение_2; выражение_3) тело_цикла
Тело цикла составляет либо один оператор, либо несколько операторов, заключенных в фигурные скобки { … } (после блока точка с запятой не ставится). В выражениях 1, 2, 3 фигурирует специальная переменная, называемая управляющей. По ее значению устанавливается необходимость повторения цикла или выхода из него.

Выражение_1 присваивает начальное значение управляющей переменной, выражение_З изменяет его на каждом шаге, а выражение_2 проверяет, не достигло ли оно граничного значения, устанавливающего необходимость выхода из цикла.

Примеры:

for (i = 1; i < 10; i++)
{ …
}
for (сh = ‘a’; ch != ‘p’;) scanf («%c», &ch);

/* Цикл будет выполняться до тех пор, пока с клавиатуры
не будет введен символ ‘p’ */

Любое из трех выражений в цикле for может отсутствовать, однако точка с запятой должна оставаться. Таким образом, for ( ; ; ) {…} — это бесконечный цикл, из которого можно выйти лишь другими способами.

В языке СИ (C)принято следующее правило. Любое выражение с операцией присваивания, заключенное в круглые скобки, имеет значение, равное присваиваемому. Например, выражение (а=7+2) имеет значение 9. После этого можно записать другое выражение, например: ((а=7+2)<10), которое в данном случае будет всегда давать истинное значение. Следующая конструкция:

((сh = getch( )) == ‘i’)

позволяет вводить значение переменной сh и давать истинный результат только тогда, когда введенным значением является буква ‘i’. В скобках можно записывать и несколько формул, составляющих сложное выражение. Для этих целей используется операция запятая. Формулы будут вычисляться слева направо, и все выражение примет значение последней вычисленной формулы. Например, если имеются две переменные типа char, то выражение

z = (х = у, у = getch( ));

определяет следующие действия: значение переменной у присваивается переменной х; вводится символ с клавиатуры и присваивается переменной у; z получает значение переменной у.
Скобки здесь необходимы, поскольку операция запятая имеет более низкий приоритет, чем операция присваивания, записанная после переменной z. Операция запятая находит широкое применение для построения выражений цикла for и позволяет параллельно изменять значения нескольких управляющих переменных.

Допускаются вложенные конструкции, т.е. в теле некоторого цикла могут встречаться другие операторы for.
Оператор while формально записывается в таком виде:
while (выражение) тело_цикла

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

Оператор do-while формально записывается следующим образом:
do {тело_цикла} while (выражение);

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

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

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

10.1 Определения функций

Определения функций имеют вид

определение_функции:
спецификаторы_описания описатель_функции  opt инициализатор_базового_класса opt
тело_функции

Единственными cпецификаторами класса памяти (sc-cпецификаторами),
допустимыми среди спецификаторов описания, являются extern,
static, overload, inline и virtual. Описатель функции похож на
описатель «функции, возвращающей …», за исключением того, что он
включает в себя имена формальных параметров определяемой функции.

Описатель функции имеет вид

описатель_функции:
описатель ( список_описаний_параметров )

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

Тело функции имеет вид

тело_функции:
составной_оператор

Вот простой пример полного определения функции:

int max (int a,int b,int c)
{
int m = (a > b) ? a : b;
return  (m > c) ? m : c;
}

Здесь int является спецификатором типа ; max (int a, int b, int
c) является описателем функции ; { … } — блок, задающий текст
программы (код) оператора.

Поскольку в контексте выражения имя (точнее, имя как формальный
параметр) считается означающим указатель на первый элемент массива,
то описания формальных параметров, описанных как «массив из …»,
корректируются так, чтобы читалось «указатель на …».

Инициализатор базового класса имеет вид

инициализатор_базового_класса:
: ( список_параметров opt )

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

struct base { base (int); ... };
struct derived : base { derived (int); ... };
derived.derived (int a) : (a+1) { ... }
derived d (10);

Операторы условных и безусловных переходов

Для организации условных и безусловных переходов в программе на языке СИ (C)используются операторы: if — else, switch и goto. Первый из них записывается следующим образом:

if (проверка_условия) оператор_1; else оператор_2;

Если условие в скобках принимает истинное значение, выполняется оператор_1, если ложное — оператор_2. Если вместо одного необходимо выполнить несколько операторов, то они заключаются в фигурные скобки. В операторе if слово else может отсутствовать.

В операторе if — else непосредственно после ключевых слов if и else должны следовать другие операторы. Если хотя бы один из них является оператором if, его называют вложенным. Согласно принятому в языке СИ (C)соглашению слово else всегда относится к ближайшему предшествующему ему if.

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

switch (выражение)
{
case константа_1: операторы_1;
break;

case константа_2: операторы_2;
break;
…….. ……..
default: операторы_default;
}

Здесь вычисляется значение целого выражения в скобках (его иногда называют селектором) и оно сравнивается со всеми константами (константными выражениями). Все константы должны быть различными. При совпадении выполнится соответствующий вариант операторов (один или несколько операторов). Вариант с ключевым словом default реализуется, если ни один другой не подошел (слово default может и отсутствовать). Если default отсутствует, а все результаты сравнения отрицательны, то ни один вариант не выполняется.

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

Рассмотрим правила выполнения безусловного перехода, который можно представить в следующей форме:
goto метка;

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

Турбо отладчик полностью поддерживает синтаксис выражений языка СИ (C). Выражение состоит из смеси операций, строк, переменных и констант.

Логические операции в C++

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

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

  • число a больше числа b;
  • имя пользователя — Игорь;
  • сегодня четверг и так далее.

Дальше компьютер проверяет правдивость такого утверждения и возвращает результат.

Для написания таких утверждений необходимы логические операторы:

  • > — больше;
  • < — меньше;
  • == — равно;
  • ! = — не равно;
  • >= — больше или равно;
  • <= — меньше или равно.

Вот несколько примеров:

При попытке вывести значение переменной result программа выведет 1 или 0.

# Pointer Arithmetic

Pointer addition

Given a pointer and a scalar type , evaluates into a pointer to the th element of the pointed-to type that directly succeeds the pointed-to object in memory.

It does not matter if the pointer is used as the operand value or the scalar value. This means that things such as are valid. If is the member of an array, then is a pointer to . In other words, or is a pointer to , is a pointer to , and so on. In general, is same as .

Unlike the usual arithmetic, addition of to a pointer to an will add bytes to the current address value. As array names are constant pointers, is the only operator we can use to access the members of an array via pointer notation using the array name. However, by defining a pointer to an array, we can get more flexibility to process the data in an array. For example, we can print the members of an array as follows:

By defining a pointer to the array, the above program is equivalent to the following:

See that the members of the array are accessed using the operators and . The other operators that can be used with the pointer are and .

Pointer subtraction

Given two pointers to the same type, evaluates into an object of type that holds the scalar value that must be added to the second pointer in order to obtain the value of the first pointer.

1.4.1. Оператор выражение

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

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

Примеры:

++ i;

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

a=cos(b * 5);

Этот оператор представляет
выражение, включающее в себя
операции присваивания и вызова
функции.

a(x,y);

Этот оператор представляет
выражение состоящее из вызова
функции.

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

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

оператор Описание
== равно оператору. Проверяет равенство значений двух операндов.
!= не равно оператору Проверяет равенство значений двух операндов.
>отлично, чем оператор Проверяет, превышает ли значение левого операнда значение правого операнда.
< оператор меньше. Проверяет, меньше ли значение левого операнда, чем значение правого операнда.
>= оператор больше или равно Проверяет, больше ли значение левого операнда или равно значению правого операнда.
<= оператор меньше или равно. Проверяет, меньше ли значение левого операнда или равно значению правого операнда.

Например:

#include <iostream>
using namespace std;

int main() {
	int a = 11;
	int b = 5;

	cout << "a=11, b=5" << endl;
	if (a == b) {
		cout << "a == b is true" << endl;
	}
	else {
		cout << " a == b is false" << endl;
	}

	if (a < b) {
		cout << "a < b is true" << endl;
	}
	else {
		cout << "a < b is false" << endl;
	}

	if (a > b) {
		cout << "a > b is true" << endl;
	}
	else {
		cout << "a > b is false" << endl;
	}

	return 0;
}

Вывод:

Вот скриншот кода:

Пояснение к коду:

  1. Включение заголовочного файла iostream в наш код. Это позволит нам читать и писать в консоль.
  2. Включая пространство имен std, чтобы использовать его классы и функции без его вызова.
  3. Вызов функции main(), внутри которой должна быть добавлена ​​логика программы. { отмечает начало тела функции main().
  4. Объявление целочисленной переменной a и инициализация ее значением 11.
  5. Объявление целочисленной переменной b и инициализация ее значением 5.
  6. Вывод на консоль текста с указанием значений переменных a и b.
  7. Выполнение арифметической операции a==b в операторе принятия решения if, чтобы узнать, истинно оно или ложно. { отмечает начало тела оператора if.
  8. Текст для печати на консоли, если операция a==b истинна. Endl — это ключевое слово C++ для обозначения конечной строки. Он подталкивает курсор, чтобы начать печать на следующей строке. } отмечает конец тела оператора if.
  9. Другая часть приведенного выше оператора if. В нем указывается, что делать, если операция a==b ложна.
  10. Текст для печати на консоли, если операция a==b является ложной. Endl — это ключевое слово C++ для обозначения конечной строки. Он подталкивает курсор, чтобы начать печать на следующей строке. } отмечает конец тела оператора else.
  11. Выполнив арифметическую операцию, А.
  12. Текст для печати на консоли, если операция
  13. Другая часть приведенного выше оператора if. В нем указано, что делать, если операция
  14. Текст для печати на консоли, если операция
  15. Выполнение арифметической операции a>b в операторе принятия решения if, чтобы узнать, истинно оно или ложно. { отмечает начало тела оператора if.
  16. Текст для печати на консоли, если операция a>b истинна. Endl — это ключевое слово C++ для обозначения конечной строки. Он подталкивает курсор, чтобы начать печать на следующей строке. } отмечает конец тела оператора if.
  17. Другая часть приведенного выше оператора if. В нем указывается, что делать, если операция a>b ложна.
  18. Текст для печати на консоли, если операция a>b является ложной. Endl — это ключевое слово C++ для обозначения конечной строки. Он подталкивает курсор, чтобы начать печать на следующей строке. } отмечает конец тела оператора else.
  19. Функция main() должна возвращать значение, если программа работает нормально.
  20. Конец тела функции main().

Операторы ветвления:

Оператор «if», «else»:

if (‘логическое выражение’) /*если логическое выражение истинно, то выполняется оператор,

                                                          если ложно, то программа выполняется дальше.*

     ‘оператор’;

if (‘логическое выражение’) /*если логическое выражение истинно, то выполняется оператор1,

                                                           если ложно, то выполняется оператор2.*

     ‘оператор1’;

else

     ‘оператор2’;

Пример:

C++

if (n!=100) //проверяется условие ‘n не равно 100’

cout<<«n не равно 100 \n»;//если условие верно, то выводится строка «n не равно 100»

else

cout<<«n равно 100 \n»; //если условие не верно, то выводится строка «n равно 100»

1
2
3
4
5
6
7

if(n!=100)//проверяется условие ‘n не равно 100’

cout<<«n не равно 100 \n»;//если условие верно, то выводится строка «n не равно 100»

 
else
 

cout<<«n равно 100 \n»;//если условие не верно, то выводится строка «n равно 100»

Оператор «?»:

‘логическое выражение’ ? ‘выражение1’‘выражение2’;

Если значение логического выражения истинно, то вычисляется выражение1, в противном случае вычисляется выражение2.

Пример:

C++

count << n == 2 ? «да» : «нет»; //если n=2 то в консоль выводится «да» в противном случае «нет»

1 count<<n==2?»да»»нет»;//если n=2 то в консоль выводится «да» в противном случае «нет»

Оператор «switch»:

switch(‘выражение целого типа’)

{

     case ‘значение1’

          ‘последовательность операторов1’

     break;

     case ‘значение2’

          ‘последовательность операторов2’

     break;

     …

     case ‘значение n’

          ‘последовательность операторовn’

     break;

     default

          /*ветку default можно не описывать. Она выполняется, если ни один из вышестоящего выражения не удовлетворено*/

          ‘последовательность операторовn+1’;

}

Пример:

C++

switch(n)

{

case 1: cout<<«один»;//если n=1 то выводится строка «один»

case 2: cout<<«два»;//если n=2 то выводится строка «два»

default : cout<<«не один и не два»;//если n равно другому числу, то выводится строка «не один и не два»

}

1
2
3
4
5
6
7
8
9
10
11

switch(n)

 
{
 

case1cout<<«один»;//если n=1 то выводится строка «один»

case2cout<<«два»;//если n=2 то выводится строка «два»

defaultcout<<«не один и не два»;//если n равно другому числу, то выводится строка «не один и не два»

 
}

Другие операторы

В следующей таблице перечислены некоторые другие операторы, поддерживаемые C ++:

Оператор Описание
sizeof

Возвращает размер переменной. Например, sizeof (a), где ‘a’ является целым числом и будет возвращать 4.

Condition ? X : Y

Если Условие истинно, то оно возвращает значение X, иначе возвращает значение Y.

,

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

. (dot) and -> (arrow)

Используются для ссылки на отдельных членов классов, структур и союзов.

Cast

Преобразуют один тип данных в другой. Например, int (2.2000) вернет 2.

&

Возвращает адрес переменной. Например, & a; даст фактический адрес переменной.

*

Является указателем на переменную. Например * var; будет указывать на переменную var.

Оцените статью