这是我见过的唯一地方and
,or
并被not
列为 C++ 中的实际运算符。当我在 NetBeans 中编写测试程序时,我得到了红色下划线,好像有语法错误并认为网站是错误的,但 NetBeans 是错误的,因为它按预期编译和运行。
我可以看到!
受到青睐,但&¬
的可读性似乎比他们的语法兄弟要好。为什么存在这些版本的逻辑运算符,为什么似乎没有人使用它?这是真正有效的 C++ 还是语言中包含的与 C 的某种兼容性?and
or
这是我见过的唯一地方and
,or
并被not
列为 C++ 中的实际运算符。当我在 NetBeans 中编写测试程序时,我得到了红色下划线,好像有语法错误并认为网站是错误的,但 NetBeans 是错误的,因为它按预期编译和运行。
我可以看到!
受到青睐,但&¬
的可读性似乎比他们的语法兄弟要好。为什么存在这些版本的逻辑运算符,为什么似乎没有人使用它?这是真正有效的 C++ 还是语言中包含的与 C 的某种兼容性?and
or
它们起源于 C 中的标头<iso646.h>
。当时有键盘无法键入&&
(例如)所需的符号,因此标题包含#define
's 可以帮助他们这样做,通过(在我们的示例中)定义and
为 be &&
。当然,随着时间的推移,这变得越来越少。
在 C++ 中,它们变成了所谓的替代标记。您无需包含任何内容即可在兼容的编译器中使用这些标记(因此,C 标头的 C++ 化版本<ciso646>
, 是空白的)。替代标记就像常规标记一样,除了拼写。所以在解析and
过程中和 完全一样&&
,只是同一个东西的拼写方式不同而已。
至于它们的用途:因为它们很少使用,所以使用它们往往比它有用更令人惊讶和困惑。我敢肯定,如果它是正常的,它们会更容易阅读,但人们已经习惯了&&
,||
其他任何事情都会让人分心。
编辑:但是,自从我发布此内容以来,我发现它们的使用量略有增加。我还是避开他们。
在 C++ 中,它们是真正的关键字。在 C 中,它们是定义在<iso646.h>
. 请参阅http://web.archive.org/web/20120123073126/http://www.dinkumware.com/manuals/?manual=compleat&page=iso646.html。
and
并且&&
在 C++ 中功能相同。and
and运算符是真正有效的or
C++ 和语言标准的一部分。
为了用一个具体的例子详细说明其他答案,除了“可读性”之外,还有另一个原因更and
喜欢&&
. 当逻辑与是您的意思时,明确拼写“和”可以消除细微错误的可能性。
考虑一下:
int x = 3;
int y = 4;
// Explicitly use "and"
if (x and y) {
cout << "and: x and y are both non-zero values" << endl;
}
// Using "&&"
if (x && y) {
cout << "&&: x and y are both non-zero values" << endl;
}
// Oops! I meant to type "&&"!
if (x & y) {
cout << "&: x and y are both non-zero values" << endl;
}
else {
cout << "How did I get here?" << endl;
}
所有三个 if 语句都将编译,但最后一个意味着完全不同的东西和意想不到的东西!
如果你总是and
在你的意思是逻辑 AND 时使用,你永远不会不小心输入一个“&”并让你的代码成功编译并以神秘的结果运行。
另一个很好的练习:试着不小心去掉“and”这个字符,看看会发生什么。;)
尝试搜索此页面以了解逻辑运算符的用法。 &&
或者||
很容易找到。另一方面,搜索and
oror
会给出很多误报。
符号版本也可以更好地处理纯文本文件。如果&&
出现在评论或文档中,我立即意识到作者的意思是逻辑运算符。如果and出现在文档中,文本样式可能会告诉我是什么意思。如果 and 出现在评论中......抱歉,单词识别并没有告诉我它在评论中的功能。
你有没有看到最后一次使用and
,没有文本样式的帮助?