Поиск по сайту:

Учебник по программированию на C для Linux. Часть 11. Арифметические, реляционные и логические операторы


На этой странице

  1. Заключение

До сих пор в этой серии руководств по программированию на 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 для проверки обсуждаемых здесь концепций. В случае каких-либо сомнений или вопросов, сообщите нам об этом в комментариях ниже.