Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

Они существуют для удобства использования (поддержка символов в клавиатуре/отображениях вкусов) и общей читаемости, но есть еще одна причина, которая в наши дни более выражена. Почти ни один из ответов здесь, здесь или даже главный ответ здесь излагают основную причину, по которой многие из нас предпочитают варианты слов над версиями символов (и основная причина использует их на других языках): ошибки. Различия между версиями слов очень заметны. Различия между версиями символа заметно меньше, поэтому к искушающим ошибкам в гораздо большей степени: "x | y" очень не "x || y", но при вложении в большее выражение многие из нас пропустите разницу. Это похоже на обычное случайное смешение оператора присваивания и равенства. По этой причине я отнял себя от версий символов (это было нелегко) в пользу версий слов. Я бы предпочел, чтобы кто-то сделал двойной прием на них из-за нашей любви к старым вещам, чем искушать ошибки.