Операторы отношения применимы для вычисления соотношений между операндами. Логические операторы, используя правила формальной логики, также возвращают соотношения между операндами. Поскольку операторы отношения и логические операторы часто применяются вместе, то мы рассмотрим их также вместе.
Ключевой концепцией операторов отношения и логических операторов является понятие истины и лжи. В С истине соответствует любое значение, кроме 0, а лжи — 0. Выражение, использующее операторы отношения или логические операторы, возвращают 0 для лжи и 1 для истины.
| Операторы отношения | |
| Оператор | Действие | 
| > | Больше чем | 
| >= | Больше чем или равно | 
| < | Меньше чем | 
| <= | Меньше чем или равно | 
| == | Равно | 
| != | Не равно | 
| Логические операторы | |
| && | И | 
| || | ИЛИ | 
| ! | НЕ | 
Таблица показывает операторы отношения и логические операторы. Таблица истинности для логических операторов образована с использованием на входах 1 и 0:
| p | q | p&&q | p||q | !p | 
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 1 | 
| 0 | 1 | 0 | 1 | 1 | 
| 1 | 1 | 1 | 1 | 0 | 
| 1 | 0 | 0 | 1 | 0 | 
Как операторы отношения, так и логические операторы имеют более низкий приоритет по сравнению с арифметическими операторами. Это означает, что выражение типа 10 > 1+12 вычисляется как 10 > (1 + 12). Результатом, естественно, будет ложь.
	В выражении может объединяться несколько операторов, как показано ниже:
	
	10 > 5 && 1(10 < 9) II 3 <= 4
	
	в результате чего получаем истину.
Ниже показаны приоритеты выполнения операторов отношения и логических операторов:
| высший | ! > >= < <= && | 
| низший | || | 
	Как и в арифметических выражениях, возможно использование круглых скобок для изменения естественного порядка вычисления операторов отношения или логических операторов. Например:
	
	! 1 && 0
	
	даст в результате 0, поскольку ! вычисляется первым, а затем вычисляется &&. Если в этом выражении поставить скобки следующим образом:
	
	! (1 && 0)
	
	то получится истина.
	Надо помнить, что все выражения с операторами отношения и логическими операторами дают в результате 0 или 1. Поэтому следующий фрагмент программы не только корректен, но и печатает число 1:
	
	
	int x;
	x = 100;
	printf("%d", x > 1);
