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

Можно ли использовать "и", "или" и т.д. Вместо "&&", "||"?

Я использую ключевые слова and и or в С++. Я всегда использовал их, и набирать их быстро и удобно для меня. Как только я услышал, что эти псевдонимы являются нестандартными и могут не работать на всех компиляторах. Но я не уверен в этом, я действительно не знаю, правда ли это. Предположим, что я даю кому-то свой код, будут ли у него проблемы с его компиляцией?
Все в порядке, когда я использую and, or вместо &&, ||? Или эти ключевые слова действительно нестандартные?
P.S.I использует компилятор MinGW.

4b9b3361

Ответ 1

Они на самом деле являются стандартными в С++, как определено стандартом ISO 14882: 2003 С++ 2.5/2 (и, действительно, как определено в стандарте 1998 года стандарта). Обратите внимание, что они встроены в сам язык и не требуют, чтобы вы включили какой-либо файл заголовка.

Однако они используются очень редко, и я еще не вижу производственный код, который фактически использует альтернативные токены. Единственная причина, по которой альтернативные маркеры существуют в первую очередь, состоит в том, что эти символы на некоторых клавиатурах (особенно не QWERTY) были либо несуществующими, либо неуклюжими. Он по-прежнему находится в стандарте для обратной совместимости.

Несмотря на то, что они являются стандартными, я настоятельно рекомендую вам не использовать их. Альтернативные маркеры требуют ввода большего количества символов, а в раскладке клавиатуры QWERTY уже есть все символы, необходимые для ввода кода на С++ без использования альтернативных токенов. Кроме того, они, скорее всего, сбивают с толку читателей вашего кода.

2.5/2 Альтернативные маркеры

Во всех отношениях язык, каждый альтернативный токен ведет себя одинаково, соответственно, в качестве основного токена, за исключением его правописания. Набор альтернативные токены определены в таблице 2.

Table 2 - alternative tokens
+--------------+-----------+
| Alternative  |  Primary  |
+--------------+-----------+
|    <%        |    {      |
|    %>        |    }      |
|    <:        |    [      |
|    :>        |    ]      |
|    %:        |    #      |
|    %:%:      |    ##     |
|    and       |    &&     |
|    bitor     |    |      |
|    or        |    ||     |
|    xor       |    ^      |
|    compl     |    ~      |
|    bitand    |    &      |
|    and_eq    |    &=     |
|    or_eq     |    |=     |
|    xor_eq    |    ^=     |
|    not       |    !      |
|    not_eq    |    !=     |
+--------------+-----------+

Ответ 2

Эти ключевые слова ARE стандартны и описаны в разделе 2.5 стандарта. Таблица 2 представляет собой таблицу этих "альтернативных токенов". Вы можете использовать их все, что хотите, даже если все будут ненавидеть вас, если вы это сделаете.

Ответ 3

Они являются стандартными в новом стандарте С++ 0x. Современные современные компиляторы должны их распознавать, хотя я не верю, что они все еще обязаны. Независимо от того, что плавает ваша лодка, я предполагаю.

Ответ 4

они стандартные С++, но с более старыми компиляторами и, возможно, с MSVC 10.0 (я еще не проверял), возможно, вам придется включить специальный заголовок, [isosomethingsomething.h]

приветствия и hth.,

Ответ 5

Ничего себе, я много лет использовал и смотрел многие примеры кода на С++.. и никогда, до сих пор, не знал об этом, поэтому я предполагаю, что это означает, что большинство людей их не используют. Итак, ради согласованности (если вы планируете работать в групповых проектах и ​​т.д.), Лучше всего привыкнуть использовать && и ||.

Ответ 6

Я всегда перепутал ^ (xor) и ~ (два дополнения). С альтернативными токенами (которые, как я считаю, должны быть первичными), нет сомнений в том, что они делают, да, я согласен с прежними плакатами в том, что текстовые тексты более наглядные.

Существует еще один возможный беспорядок с использованием орграфов, можно забыть один из символов в ||, && это вызовет тонкие ошибки и странное поведение. С текстовыми операторами гораздо сложнее сделать такую ​​ошибку.

Я считаю, что то, что я упомянул выше, является реальными действительными аргументами для улучшения безопасности и ясности кода. Большинство программистов на C++ СЛЕДУЕТ, на мой взгляд, попытаться привыкнуть к текстовым операторам в пользу старых загадочных.

Я удивлен, что так мало программистов знают о них. Эти операторы должны были взять много лет назад, как я вижу.

Ответ 7

В разделе 2.5 стандарта ISO/IEC 14882: 1998 (исходный стандарт С++) говорится:

§2.5 Альтернативные токены [lex.digraph]

1 Для некоторых операторов и пунктуаторов 16) предусмотрены альтернативные представления токенов.

2 Во всех отношениях языка каждый альтернативный токен ведет себя одинаково, соответственно, как его первичный токен, кроме его орфографии 17). Набор альтернативных токенов определен в таблице 2.

16) К ним относятся "орграфы" и дополнительные зарезервированные слова. Термин "орграф" (токен, состоящий из двух символов) не совсем описательный, поскольку один из альтернативных токенов предварительной обработки %:%: и, конечно, несколько основных токенов содержат два символа. Тем не менее, эти альтернативные маркеры, которые не содержат лексических ключевых слов, обычно называются "орграфами".

17) Таким образом, "строковые" значения (16.3.2) of [и <: будут разными, сохраняя правописание источника, но в противном случае токены могут быть свободно меняются.

                 Table 2—alternative tokens
_______________________________________________________________________________
    alternative  primary  |  alternative  primary  |  alternative  primary
     <%            {      |     and          &&    |    and_eq       &=
     %>            }      |    bitor         |     |    or_eq        |=
     <:            [      |     or           ||    |    xor_eq       ^=
     :>            ]      |     xor          ^     |     not         !
     %:            #      |    compl         ~     |    not_eq       !=
     %:%:          ##     |    bitand        &     |
_______________________________________________________________________________

Нет обсуждения "если вы включаете некоторый заголовок" (хотя в C вам нужно #include <iso646.h>). Любая реализация, которая не поддерживает ключевые слова или орграфы, не соответствует выпуску 1998 года, не говоря уже о последующих выпусках стандарта С++.

Ответ 8

Очевидно, что в отношении обратной совместимости ключевые слова "и/или" не являются проблемой. Я бы поверил, что они будут более новым стандартом. Это просто старые программисты, которые не понимают, что какой-нибудь нуб, возможно, должен будет прочитать код и не захочет искать, что && означает. Опять же, если какой-либо ИТ-отдел будет стоить соли, он заставит программистов соответствовать стандартам компании! Это мое убеждение, что (и/или) являются футуристическими и реальными возможными стандартами, идущими в будущее. && (pun) (и/или) обратно совместим.