Записанные версии логических операторов

Это - единственное место, которое я когда-либо видел and, or и not перечисленный как фактические операторы в C++. Когда я описал тестовую программу в NetBeans, я получил красное подчеркивание, как будто была синтаксическая ошибка и полагала, что веб-сайт был неправильным, но это - NetBeans, который неправ, потому что это скомпилировало и работало как ожидалось.

Я вижу ! быть одобренным not но удобочитаемость and && or кажется больше, чем их грамматические братья. Почему делают эти версии логических операторов существуют и почему не делает по-видимому никакого использования это? Этот действительно допустимый C++ или своего рода совместимость с C, который был включен с языком?

86
задан Wolf 10 January 2017 в 10:43
поделиться

2 ответа

Они появились в Си в заголовке . В то время существовали клавиатуры, которые не могли набрать необходимые символы для && (например), поэтому заголовок содержал #define, которые помогали им в этом, определяя и как && (в нашем примере). Конечно, со временем это стало использоваться все реже.

В C++ они стали так называемыми альтернативными маркерами. Вам не нужно ничего включать, чтобы использовать эти лексемы в совместимом компиляторе (как таковая, C++-фицированная версия заголовка C, , пуста). Альтернативные лексемы похожи на обычные лексемы, за исключением написания. Так, при разборе and является точно таким же, как &&, это просто другой способ написания одного и того же.

Что касается их использования: поскольку они используются редко, их использование часто вызывает больше удивления и путаницы, чем пользы. Я уверен, что если бы это было нормально, их было бы гораздо легче читать, но люди настолько привыкли к && и ||, что все остальное просто отвлекает.

EDIT: Я заметил незначительное увеличение их использования с тех пор, как я написал это, однако. Я все еще избегаю их.

100
ответ дан 24 November 2019 в 08:05
поделиться

В C ++ это настоящие ключевые слова. В C это макросы, определенные в . См. http://web.archive.org/web/20120123073126/http://www.dinkumware.com/manuals/?manual=compleat&page=iso646.html .

10
ответ дан 24 November 2019 в 08:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: