В предыдущей своей статье я рассказывал, как можно с пользой употреблять точку с запятой в качестве пустого оператора в языке С++. Здесь я рассмотрю, какие неприятные эффекты может породить слишком свободное и безответственное обращение с этим служебным символом.
Точкой с запятой в С++ должны завершаться многие команды. Среди них:
объявления переменных:
int a, b, arr[10], *p;
определение типа структуры/класса/объединения/перечисления. Например:
struct Point {int x;int y;};
В общем случае такое определение может выглядеть приблизительно так:
struct Point {int x;int y;} p1, p2, points[15], *pPointer;
Здесь, кроме того что вводится новый тип данных Point, ещё определяются четыре переменные: две переменные типа Point, один массив элементов типа Point и один указатель на Point. Сравните это объявление с примером из пункта 1. Теперь вы должны увидеть, что пункт 2 – это усложнённый вариант объявления переменных. Т.е., на самом деле, последняя точка с запятой в определении типа структуры (или класса) завершает не определение типа структуры, а список переменных этого типа, который, как частный случай, может оказаться пустым. Правда, на практике такой «частный случай» чаще всего и реализуется, поэтому многие программисты давно забыли, откуда происходит необходимость ставить точку с запятой в конце определения класса.
Объявление элементов данных структуры/класса. Это две точки с запятой в определении структуры Point из пункта 2, стоящие после определения полей x и y этой структуры.
Добрый день! Семен Давыдов, автор курса C++. Управление памятью, или, как мы его успели прозвать в ШП, «человек из Яндекса» подготовил бесплатный видеурок не для новичков. Все, кому интересно по-настоящему профессиональное программирование, посвящается.
P.S. В ближайшее время появится видеопрезентация курса Семена C++. Управление памятью, который стартует уже в субботу. Не пропустите последнюю возможность записаться!
В С++ и других Си-подобных языках есть несколько конструкций, которые ничего не делают.
Начнём с пустого оператора. Хотя трудно себе представить что-то синтаксически более примитивное, пустой оператор хранит в себе и великие возможности, и многия печали. О печалях потом, а в этой статье только позитив!
Начнём с того, что такое оператор вообще. В мире программирования существует большой разброд как в переводе этого термина с английского языка, так и в толковании уже переведённого слова. Для определённости, на время чтения этой статьи, считайте, что оператор – это законченная инструкция языка, участвующая в реализации алгоритма. Каждый простой оператор в С++ должен заканчиваться точкой с запятой. Простые операторы называются так в противовес составным (блок операторов) и структурным (операторы ветвления и циклов). Напишем несколько простых операторов:
z =sin(x)*cos(y)+cos(x)*sin(y);
z = x + y;
z += x;
z++;
z;;
Как видите, каждый оператор короче предыдущего, а апофеозом такого упрощения является пустой оператор – одинокая точка с запятой.
Недавно, проверяя домашние задания участников живых курсов Школы Программирования, заметил, что иногда они сталкиваются с проблемами из-за того, что не используют скобки, например:
$a=false;$b=true;$c=$a xor $b;
Xor – исключающее ИЛИ, в данном случае переменной $c по логике должно быть присвоено значение true, однако, оператор присваивания имеет больший приоритет, чем xor, в результате чего