Руководство полного чайника по программированию на языке Си

       

УСЛОВНЫЙ ОПЕРАТОР


if(условие) оператор;

...продолжение...

Работает так:

Вычисляется условие.

Если оно истинно, то выполняется оператор, затем выполняется продолжение.

Если оно ложно, то сразу выполняется продолжение, а оператор не выполняется.

Если нам надо выполнить при истинности условия несколько операторов, мы должны заключить их в скобки { ... } - это так называемый "составной оператор".

if(условие) { оператор1; оператор2; ... } продолжение

После } точка с запятой НЕ СТАВИТСЯ (можно и поставить, но не нужно).

Условный оператор изображают на схемах так:

| | | ---------------- ---| ЕСЛИ условие |---- | ---------------- | | | V V истинно ложно | | V | ------------ | | оператор | | ------------ | | | ------->-------<------- | | V продолжение |

Имеется вторая форма, с частью "иначе":

if(условие) оператор_если_истинно; else оператор_если_ложно;



"или то, или другое" (но не оба сразу)

| | | ---------------- ---| ЕСЛИ условие |----------- | ---------------- | | | V V истинно ложно | | V | ------------------------- ----------------------- | оператор_если_истинно | | оператор_если_ложно | ------------------------- ----------------------- | | ------->-------<-------------- | | V продолжение |

Пример1:

if(x > 10) printf("Икс больше десяти\n");

Пример2:

int x, y, z;

if(x < y) z = 1; else z = 2;

Условия:

В качестве условий могут использоваться операторы СРАВНЕНИЯ (сравнивать можно переменные, выражения, константы)

x < y меньше x > y больше x <= y меньше или равно x >= y больше или равно x == y равно x != y не равно

Все эти операторы в качестве результата операции сравнения выдают 1, если сравнение истинно 0, если оно ложно.

Таким образом, на самом деле условный оператор работает так:

if(условие) ....

Если условие есть НОЛЬ - то условие считается ложным. Если условие есть НЕ НОЛЬ а ... -2, -1, 1, 2, 3, ... - то условие истинно.

Это определение.

Из него в частности вытекает, что сравнение с целым нулем можно опускать:

if(x != 0) ... ; сокращается до if(x) ... ; if(x == 0) ... ; сокращается до if(!x) ... ;

Пример:

int x, y, z;

if(x == 1){ y = 2; z = x + y; } else { y = 1; z = x - y; }

Пример со вложенными условными операторами:

if(x == 1){ printf("Икс равен 1\n"); if(y == 2){ printf("Игрек равен 2\n"); } } else { printf("Икс не равен 1\n"); }

Часто применяется последовательность условных операторов, перебирающая различные варианты:

if(x == 1) printf("Икс равен 1\n"); else if(x == 2) printf("Икс равен 2\n"); else if(x == 3){ printf("Икс равен 3\n"); y = 1; } else printf("Непредусмотренное значение икс\n");

Самое сложное - привыкнуть к тому, что сравнение обозначается знаком ==, а не = Знак = означает "присвоить значение", а не "сравнить на равенство".



Содержание раздела