Имейте в виду, что две альтернативы в операторе if else должны быть одиночными операторами. Если в каждой логической ветви требуется более одного оператора, воспользуйтесь фигурными скобками, чтобы организовать их в единый блок. В отличие от других языков, таких как BASIC и FORTRAN, C++ не воспринимает автоматически все, что находится между if и else, как один блок, поэтому необходимо с помощью фигурных скобок объединять операторы в блок. Следующий код, например, вызовет ошибку во время компиляции:
if (ch == ' Z')
zorro++; //if заканчивается здесь
cout << "Another Zorro candidate\n";
else // неверно
dull++;
cout << "Not a Zorro candidate\n";
Компилятор рассматривает это как простой оператор if, который заканчивается на zorro++;. Затем идет оператор cout. До этого места все хорошо. Но далее идет то, что воспринимается компилятором как бесхозный else, а потому он считает это синтаксической ошибкой.
Чтобы код делал то, что нужно, следует указать фигурные скобки:
if (ch == ' Z')
{ // блок, выполняемый, если условие истинно
zorro++;
cout << "Another Zorro candidate\n";
}
else
{ // блок, выполняемый, если условие ложно
dull++;
cout << "Not a Zorro candidate\n";
}
Поскольку C++ — язык свободной формы, фигурные скобки можно размещать как вам угодно, до тех пор, пока они ограничивают операторы языка. В предыдущем примере демонстрируется один популярный формат. А вот и другой формат:
if (ch == ' Z') {
zorro++;
cout << "Another Zorro candidate\n";
}
else {
dull++;
cout << "Not a Zorro candidate\n";
}
Первая форма подчеркивает блочную структуру операторов, в то время как вторая более тесно связывает блоки с ключевыми словами if и else. Любой стиль ясен и согласован, а потому будет служить вам хорошо; однако вы можете столкнуться с руководителем или работодателем, который имеет собственные строгие и специфические взгляды на эту тему.