Это - единственное место, которое я когда-либо видел and
, or
и not
перечисленный как фактические операторы в C++. Когда я описал тестовую программу в NetBeans, я получил красное подчеркивание, как будто была синтаксическая ошибка и полагала, что веб-сайт был неправильным, но это - NetBeans, который неправ, потому что это скомпилировало и работало как ожидалось.
Я вижу !
быть одобренным not
но удобочитаемость and
&& or
кажется больше, чем их грамматические братья. Почему делают эти версии логических операторов существуют и почему не делает по-видимому никакого использования это? Этот действительно допустимый C++ или своего рода совместимость с C, который был включен с языком?
Они появились в Си в заголовке
. В то время существовали клавиатуры, которые не могли набрать необходимые символы для &&
(например), поэтому заголовок содержал #define
, которые помогали им в этом, определяя и
как &&
(в нашем примере). Конечно, со временем это стало использоваться все реже.
В C++ они стали так называемыми альтернативными маркерами. Вам не нужно ничего включать, чтобы использовать эти лексемы в совместимом компиляторе (как таковая, C++-фицированная версия заголовка C,
, пуста). Альтернативные лексемы похожи на обычные лексемы, за исключением написания. Так, при разборе and
является точно таким же, как &&
, это просто другой способ написания одного и того же.
Что касается их использования: поскольку они используются редко, их использование часто вызывает больше удивления и путаницы, чем пользы. Я уверен, что если бы это было нормально, их было бы гораздо легче читать, но люди настолько привыкли к &&
и ||
, что все остальное просто отвлекает.
EDIT: Я заметил незначительное увеличение их использования с тех пор, как я написал это, однако. Я все еще избегаю их.
В C ++ это настоящие ключевые слова. В C это макросы, определенные в
. См. http://web.archive.org/web/20120123073126/http://www.dinkumware.com/manuals/?manual=compleat&page=iso646.html .