Логические операции и операции отношения

Последнее обновление: 02.01.2023

Условные операции позволяют проверить истинность некоторого условия и оперируют понятиями "истина"/"верно" и "ложь"/"неверно". Причем "истина" (условие верно) соответствует значению 1, а "ложь" (условие не верно) - значению 0. К условным операциям относят операции сравнения и логические операции. Оба этих вида операций применяются к арифметическим операндам, то есть числам. .

Операции сравнения

Операции сравнения (еще называют операциями отношения) позволяют сравнить два значения и возвращают 1, если выражение истинно, и 0, если выражение ложно. В языке Си есть следующие операции сравнения:

  • ==

    Операция "равно". Возвращает 1, если оба операнда равны, и 0, если они не равны:

    #include <stdio.h>
     
    int main(void)
    {
        int a = 10;
        int b = 4;
        int c = a == b;	                // 0 - числа НЕ равны
        printf("c = %d \n", c);         // c = 0
    
        int num = 5;
        int result = num == 2 + 3;	    // 1 - числа равны
        printf("result = %d \n", result);     // result = 1
        return 0;
    }
    

    В первом случае переменная c хранит результат выражения a == b. Так как a и b не равны, то это выражение возвратит 0. Поэтому переменная c будет равна 0.

    Во втором случае переменная result хранит результат выражения num == 2 + 3;, где в качестве второго операнда выступает результат операции 2 + 3. Так как переменная num равна 5, то это выражение возвратит 1. Поэтому переменная result будет равна 1.

  • !=

    Операция "не равно". Возвращает 1, если первый операнд не равен второму, и 0, если оба операнда равны:

    int c = 10 != 4;	// 1
    int d = 4 != 4;     // 0
    
  • >

    Операция "больше чем". Возвращает 1, если первый операнд больше второго, и 0, если первый операнд меньше или равен второму:

    int a = 10;
    int b = 4;
    int c = a > b;	// 1
    
  • <

    Операция "меньше чем". Возвращает 1, если первый операнд меньше второго, и 0, если первый операнд больше или равен второму:

    int c = 10 < 4;	// 0
    
  • <=

    Операция "меньше или равно". Возвращает 1, если первый операнд меньше или равен второму, и 0, если первый операнд больше второго:

    int c = 10 <= 4;	// 0
    
  • >=

    Операция "больше или равно". Возвращает 1, если первый операнд больше или равен второму, и 0, если первый операнд меньше второго:

    int c = 10 >= 4;	// 1
    

Как правило, операции отношения применяются в условных конструкциях типа if...else, которые мы далее рассмотрим.

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

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

  • ! (операция отрицания)

    Если операнд равен 0, то возвращает 1, иначе возвращает 0.

    int c = !2;	// 0
    int d = !0;	// 1
    
  • && (конъюнкция, логическое умножение)

    Возвращает 1, если оба операнда не равны 0. Возвращает 0, если хотя бы один операнд равен 0.

    int c = -2 && 5;	// 1
    int d = 0 && 7;		// 0
    
  • || (дизъюнкция, логическое сложение)

    Возвращает 1, если хотя бы один операнд не равен 0. Возвращает 0, если оба операнда равны 0.

    int c = -2 || 5;	// 1
    int d = 0 || 7;		// 1
    int e = 0 || 0;		// 0
    

Используем одновременно несколько логических операций и операций сравнения:

int a = -2 > 5;			// 0
int b = 0 < 7;			// 1
int c = 0 == 0;		     // 1
int d = a && b || c; 		// 1

printf("a = %d \n", a);
printf("b = %d \n", b);
printf("c = %d \n", c);
printf("d = %d \n", d);

Операции сравнения имеют больший приоритет, чем логические операции, поэтому мы могли бы напрямую подставить операции сравнения:

int d = -2 > 5 && 0 < 7 || 0 == 0; 		// 1
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850