Операторы увеличения и уменьшения в Master C:использование и лучшие практики
C – Операторы увеличения и уменьшения
Оператор инкремента (++) увеличивает значение переменной на 1, а оператор декремента (--) уменьшает значение.
Операторы инкремента и декремента часто используются при построении счетных циклов в C (с помощью цикла for). Они также находят применение при обходе массивов и арифметике указателей.
Операторы ++ и -- являются унарными и могут использоваться в качестве префикса или постфикса переменной.
Пример операторов увеличения и уменьшения
Следующий пример содержит несколько операторов, демонстрирующих использование операторов увеличения и уменьшения в различных вариантах –
#include <stdio.h>
int main() {
int a = 5, b = 5, c = 5, d = 5;
a++; // postfix increment
++b; // prefix increment
c--; // postfix decrement
--d; // prefix decrement
printf("a = %d\n", a);
printf("b = %d\n", b);
printf("c = %d\n", c);
printf("d = %d\n", d);
return 0;
}
Вывод
Когда вы запустите этот код, он выдаст следующий результат –
a = 6 b = 6 c = 4 d = 4
Пример пояснения
Другими словами, «a++» имеет тот же эффект, что и «++a», поскольку оба выражения увеличивают значение переменной «a» на 1. Аналогично, «a--» имеет тот же эффект, что и «--a».
Выражение «а++;» можно рассматривать как эквивалент утверждения «a =a + 1;». Здесь выражение справа добавляет 1 к «a», и результату присваивается обратно 1, в результате чего значение «a» увеличивается на 1.
Аналогично, «б--;» эквивалентно "b =b 1;".
Типы оператора приращения
Существует два типа операторов приращения:предварительное приращение. и приращение публикации .
Оператор префикса (префикс)
В выражении оператор предварительного приращения увеличивает значение переменной на 1 перед использованием значения переменной.
Синтаксис
++variable_name;
Пример
В следующем примере мы используем оператор предварительного приращения, при котором значение «x» будет увеличено на 1, а затем увеличенное значение будет использоваться в выражении.
#include <stdio.h>
int main() {
int x = 10;
int y = 10 + ++x;
printf("x = %d, y = %d\n", x, y);
return 0;
}
Когда вы запустите этот код, он выдаст следующий результат –
x = 11, y = 21
Оператор инкремента Post (Postfix)
В выражении оператор постинкремента увеличивает значение переменной на 1 после использования значения переменной.
Синтаксис
variable_name++;
Пример
В следующем примере мы используем оператор пост-инкремента, где в выражении будет использоваться значение «x», а затем оно будет увеличено на 1.
#include <stdio.h>
int main() {
int x = 10;
int y = 10 + x++;
printf("x = %d, y = %d\n", x, y);
return 0;
}
Когда вы запустите этот код, он выдаст следующий результат –
x = 11, y = 20
Типы оператора уменьшения
Существует два типа операторов декремента:предварительный декремент. и уменьшение публикации .
Оператор предварительного (префиксного) уменьшения
В выражении оператор предварительного декремента уменьшает значение переменной на 1 перед использованием значения переменной.
Синтаксис
--variable_name;
Пример
В следующем примере мы используем оператор предварительного декремента, при котором значение «x» будет уменьшено на 1, а затем уменьшенное значение будет использоваться в выражении.
#include <stdio.h>
int main() {
int x = 10;
int y = 10 + --x;
printf("x = %d, y = %d\n", x, y);
return 0;
}
Когда вы запустите этот код, он выдаст следующий результат –
x = 9, y = 19
Оператор декремента Post (Postfix)
В выражении оператор постдекремента уменьшает значение переменной на 1 после использования значения переменной.
Синтаксис
variable_name--;
Пример
В следующем примере мы используем оператор постдекремента, где в выражении будет использоваться значение «x», а затем оно будет уменьшено на 1.
#include <stdio.h>
int main() {
int x = 10;
int y = 10 + x--;
printf("x = %d, y = %d\n", x, y);
return 0;
}
Когда вы запустите этот код, он выдаст следующий результат –
x = 9, y = 20
Дополнительные примеры операторов увеличения и уменьшения
Пример 1
В следующем примере показано использование префиксного/постфиксного увеличения/уменьшения –
#include <stdio.h>
int main(){
char a = 'a', b = 'M';
int x = 5, y = 23;
printf("a: %c b: %c\n", a, b);
a++;
printf("postfix increment a: %c\n", a);
++b;
printf("prefix increment b: %c\n", b);
printf("x: %d y: %d\n", x, y);
x--;
printf("postfix decrement x : %d\n", x);
--y;
printf("prefix decrement y : %d\n", y);
return 0;
}
Вывод
Когда вы запустите этот код, он выдаст следующий результат –
a: a b: M postfix increment a: b prefix increment b: N x: 5 y: 23 postfix decrement x: 4 prefix decrement y: 22
Приведенный выше пример показывает, что префиксные и постфиксные операторы одинаково влияют на значение переменной операнда. Однако когда эти операторы «++» или «--» появляются в выражении вместе с другими операторами, они ведут себя по-другому.
Пример 2
В следующем коде начальные значения переменных «a» и «b» одинаковы, но функция printf() отображает разные значения —
#include <stdio.h>
int main(){
int x = 5, y = 5;
printf("x: %d y: %d\n", x,y);
printf("postfix increment x: %d\n", x++);
printf("prefix increment y: %d\n", ++y);
return 0;
}
Вывод
Запустите код и проверьте его вывод –
x: 5 y: 5 postfix increment x: 5 prefix increment y: 6
В первом случае функция printf() печатает значение «x», а затем увеличивает его значение. Во втором случае сначала выполняется оператор инкремента, функция printf() использует для печати увеличенное значение.
Приоритет операторов увеличения и уменьшения
В C существует несколько операторов. Когда в выражении используется несколько операторов, они выполняются в соответствии с их приоритетом. Операторы увеличения и уменьшения ведут себя по-разному при использовании вместе с другими операторами.
Если выражение состоит из операторов увеличения или уменьшения наряду с другими операторами, операции увеличения и уменьшения выполняются в первую очередь. Постфиксные операторы увеличения и уменьшения имеют более высокий приоритет, чем префиксные операторы увеличения и уменьшения.
Читайте также: Приоритет операторов в C
Пример 1
Взгляните на следующий пример –
#include <stdio.h>
int main(){
int x = 5, z;
printf("x: %d \n", x);
z = x++;
printf("x: %d z: %d\n", x, z);
return 0;
}
Вывод
Запустите код и проверьте его вывод –
x: 5 x: 6 z: 5
Поскольку «x++» увеличивает значение «x» до 6, можно ожидать, что «z» также будет равно 6. Однако в результате «z» отображается как 5. Это связано с тем, что оператор присваивания имеет более высокий приоритет над оператором постфиксного приращения. Следовательно, существующее значение «x» присваивается «z» перед увеличением «x».
Пример 2
Взгляните на другой пример ниже –
#include <stdio.h>
int main(){
int x = 5, y = 5, z;
printf("x: %d y: %d\n", x,y);
z = ++y;
printf("y: %d z: %d\n", y ,z);
return 0;
}
Вывод
Когда вы запустите этот код, он выдаст следующий результат –
y: 5 y: 6 z: 6
Результат может сбить с толку, поскольку значение «y», как и «z», теперь равно 6. Причина в том, что оператор увеличения префикса имеет более высокий приоритет, чем оператор присваивания. Следовательно, сначала увеличивается значение «y», а затем его новое значение присваивается «z».
Ассоциативность операторов также играет важную роль. Для операторов увеличения и уменьшения ассоциативность осуществляется слева направо. Следовательно, если в одном выражении присутствует несколько операторов увеличения или уменьшения, первым будет выполняться самый левый оператор, перемещаясь вправо.
Пример 3
В этом примере выражение присваивания содержит как префиксные, так и постфиксные операторы.
#include <stdio.h>
int main(){
int x = 5, y = 5, z;
z = x++ + ++y;
printf("x: %d y: %d z: %d\n", x,y,z);
return 0;
}
Вывод
Запустите код и проверьте его вывод –
x: 6 y:6 z: 11
В этом примере первая операция, которую необходимо выполнить, — это «y++» («y» становится 6). Во-вторых, оператор «+» добавляет «x» (то есть 5) и «y», результат, присвоенный «z», равен 11, а затем «x++» увеличивает «x» до 6.
Использование оператора инкремента в цикле
В C наиболее часто используемый синтаксис цикла for выглядит следующим образом:
for (init_val; final_val; increment) {
statement(s);
}
Пример
Тело цикла выполняется для всех значений переменной между начальным и конечным значениями, увеличивая ее после каждого раунда.
#include <stdio.h>
int main(){
int x;
for (x = 1; x <= 5; x++){
printf("x: %d\n", x);
}
return 0;
}
Вывод
Когда вы запустите этот код, он выдаст следующий результат –
x: 1 x: 2 x: 3 x: 4 x: 5
Язык C
- С# против. C++:в чем разница между C# и C++?
- C Вход Выход (ввод/вывод)
- Функция free() в библиотеке C:как использовать? Учитесь на примере
- Учетная запись Microsoft:безопасный доступ и управление
- С - Принятие решений
- Настройка среды C++
- Базовый ввод/вывод C++:пример Cout, Cin, Cerr
- C — заголовочные файлы
- Указатели и массивы C++
- C — указатели