Учись программированию на C++ Builder бесплатно!

Оператор if предназначен для выполнения тех или иных действий в зависимости от истинности или ложности некоторого условия. Условие задается выражением, имеющим результат булева типа. Оператор имеет две формы: if и if...else. Форма if имеет вид:

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

Скобки, обрамляющие условие, обязательны.

Условием может быть выражение, преобразуемое в булев тип. Если условие истинно (возвращает true, т.е. ненулевое значение), то указанный в конструкции if оператор выполняется. В противном случае управление сразу передается следующему за конструкцией if оператору. Например, в результате выполнения операторов:

С = А;
if (В > А) С = В;

переменная С станет равна максимальному из чисел А и В, поскольку оператор С = В будет выполнен только при В > А.

Поскольку в С++ арифметическое (целое или действительное) значение может преобразовываться к булеву (любое ненулевое значение воспринимается как true, а нулевое как false), то условие может иметь целый тип. Например:

int а, b, с;
if(а - b/с) ...;

В данном случае условие if(a - b/c) эквивалентно if(a == b/c), поскольку а - b/c возвращает нуль при равенстве а и b/с. Аналогичные условия формально можно записывать и для действительных чисел:

double а, b, с;
if(а - b/с) ...;

Но из-за ошибок округления это может не сработать, даже если теоретически значения а и b/с должны совпадать.

В условных операторах выбора можно сравнивать целые числа и записывать целые выражения. Но никогда не записывайте действительные выражения. Из-за ошибок округления результат их вычисления может не быть равным нулю, даже когда чисто теоретически результат дает нуль.

В условии можно объявлять переменные. Например:

if (int v = func(a)) ...;

В этом случае область действия и существования объявленной переменной только данная структура if, включая ее выполняемый оператор. Форма конструкции if...else имеет вид:

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

Если условие возвращает true, то выполняется первый из указанных операторов, в противном случае выполняется второй оператор. Обратите внимание, что в конце первого оператора перед ключевым словом else ставится точка с запятой.

Примеры

if(J == 0)
ShowMessage("Деление на нуль");
else Result = I/J;

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

if(J == 0)
{
ShowMessage("Деление на нуль");
Result = 0;
}
else
Result = I/J;

Опять обратите внимание, что после фигурной скобки перед else точка с запятой не ставится.

При вложенных конструкциях if могут возникнуть неоднозначности в понимании того, к какой из вложенных конструкций if относится элемент else. Компилятор всегда считает, что else относится к последней из конструкций if, в которой не было раздела else.

Например, в конструкции:

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

else будет отнесено компилятором ко второй конструкции if, т.е. оператор2 будет выполняться в случае, если первое условие истинно, а второе ложно. Иначе говоря, вся конструкция будет прочитана как:

if (условие1)
{
if (условие2) оператор1;
else оператор2;
}

Если же нужно отнести else к первому if, это надо записать в явном виде с помощью фигурных скобок:

if (условие!)
{
  if (условие2) оператор1;
}
else оператор2;
Поделиться