Учебник по программированию на C для Linux. Часть 11. Арифметические, реляционные и логические операторы
На этой странице
- Заключение
До сих пор в этой серии руководств по программированию на C мы обсуждали такие базовые вещи, как функции, массивы, переменные и многое другое. Продолжая тему, в этом уроке мы обсудим еще одно такое базовое понятие: операторы.
Если вы новичок в языке программирования C, вы в основном будете иметь дело с тремя типами операторов: арифметическими, реляционными и логическими. Начнем с аэрометрических операторов.
По сути, в C есть 5 типов арифметических операторов: +, -, *,/и %. В то время как +, - и/говорят сами за себя, * относится к умножению, а % является оператором модуля. Если вы не знаете, оператор % дает вам остаток. Например:
a % b
Здесь оператор % обеспечивает получение остатка при делении a на b. Это означает, что остаток может быть равен нулю в случаях, когда а полностью делится на b. Вот небольшой пример, который должен дать вам лучшее представление об этих операторах:
#include <stdio.h>
int main()
{
int a = 10, b = 3, c =0;
c = a + b;
printf("%d\n", c);
c = a - b;
printf("%d\n", c);
c = a*b;
printf("%d\n", c);
c = a/b;
printf("%d\n", c);
c = a%b;
printf("%d\n", c);
return 0;
}
Ниже приведен вывод этой программы:
13
7
30
3
1
Здесь стоит упомянуть, что при работе с числами с плавающей запятой и двойными числами вы не должны использовать оператор %. Кроме того, операторы + и -, которые мы использовали здесь, являются бинарными операторами, то есть они требуют двух операндов (например, a и b в нашем случае). Существуют также унарные операторы + и -, которые работают с одним операндом.
Вот пример унарного оператора - в действии:
#include <stdio.h>
int main()
{
int a = 10, b = 3, c =0;
c = -a;
printf("c = %d", c);
}
Вот результат:
c = -10
Среди всех операторов, обсуждавшихся до сих пор, унарные + и - делят первое место с точки зрения приоритета, за ними следуют *,/и %, за которыми, в свою очередь, следуют двоичные + и -.
Обратите внимание, что есть и другие унарные операторы, некоторые из которых мы уже косвенно обсуждали в наших предыдущих уроках. Вот список: ++, --, !, & и sizeof.
Мы уже обсуждали операторы инкремента и декремента ++ и -- (как в префиксной, так и в постфиксной формах). ! НЕ является оператором, который отрицает все, к чему он применяется. Например, если результат условия истинен, применение ! превратит его в ложное и наоборот.
Двигаясь дальше, & используется для получения адреса переменной (как уже было видно в случае с аргументами функции scanf()), а оператор sizeof дает вам размер переданного ему операнда. Следующий фрагмент кода должен дать вам лучшее представление об этих операторах:
#include <stdio.h>
int main()
{
int a = 10, b = 3, c =0, d =1, e=0, f=9;
printf("a = 10 and a++ = %d\n", a++);
printf("b = 3 and ++b = %d\n", ++b);
printf("c = 0 and c-- = %d\n", c--);
printf("d = 1 and --d = %d\n", --d);
if(!e)
{
printf("\n e is zero or FALSE and its address is: %u\n", &e);
printf("\n sizeof 'f' is: %u\n", sizeof(f));
}
return 0;
}
И вот вывод:
a = 10 and a++ = 10
b = 3 and ++b = 4
c = 0 and c-- = 0
d = 1 and --d = 0
e is zero or FALSE and its address is: 856178696
sizeof 'f' is: 4
Двигаясь дальше, давайте быстро рассмотрим реляционные и логические операторы. Ниже приведены реляционные операторы:
> >= < <= == !=
Вот как их можно использовать:
a > b
a >= b
a < b
a <= b
a == b
a != b
В порядке их появления выше эти операторы проверяют, является ли a больше, больше или равно, меньше, меньше или равно, равно или не равно b. Первые четыре оператора имеют одинаковый приоритет, который выше, чем у последних двух. Обратите внимание, что последние два оператора также называются операторами равенства.
И, наконец, переходя к логическим операторам. По сути, их два: && и ||. Оба эти оператора в основном используются для оценки условий или выражений. Например:
if (cond1 && cond2)
{
}
if (expr1 && expr2)
{
}
if (cond1 || cond2)
{
}
if (expr1 || expr2)
{
}
В случае первых двух операторов if выполнение войдет в блок только в том случае, если оба условия истинны. Принимая во внимание, что в случае последних двух операторов if выполнение войдет в блок, если какое-либо условие выражения истинно.
Имейте в виду, что реляционные операторы имеют более низкий приоритет, чем арифметические операторы, а приоритет логических операторов ниже, чем реляционные операторы и операторы равенства. Между собой && имеет более высокий приоритет, чем ||.
Заключение
В этом уроке мы обсудили основы операторов, как они работают и их приоритет. Предлагается создать несколько примеров программ на C для проверки обсуждаемых здесь концепций. В случае каких-либо сомнений или вопросов, сообщите нам об этом в комментариях ниже.