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