逻辑运算符的书面版本

这是我见过的唯一地方and,or并且not在C ++中被列为实际的运算符。当我在NetBeans中编写一个测试程序时,我得到了红色下划线,好像有语法错误,并认为该网站是错误的,但是NetBeans是错误的,因为它按预期进行了编译和运行。


我可以看到!它受到青睐,not但是and&& 的可读性or似乎比他们的语法兄弟更好。为什么存在这些版本的逻辑运算符,为什么似乎没有人使用它?这是真正有效的C ++还是该语言随附的与C的某种兼容性?


尚方宝剑之说
浏览 518回答 3
3回答

GCT1015

它们起源于下在头<iso646.h>。当时有一些键盘无法&&(例如)键入所需的符号,因此标题(包含#define)可以通过(在我们的示例中)定义and为来帮助他们这样做&&。当然,随着时间的流逝,这种使用变得越来越少了。在C ++中,它们成为了所谓的替代令牌。你不会需要包括任何一个兼容的编译器使用这些标记(如如此,C ++ - C头的指明分数版本<ciso646>,为空)。除拼写外,替代标记与常规标记类似。因此,在分析过程中and是完全相同一样&&,它的拼写同样的事情只是用不同的方式。关于它们的使用:由于很少使用它们,因此使用它们通常比有用的方法更加令人惊讶和混乱。我敢肯定,如果这是正常的话,它们会更容易阅读,但是人们已经习惯了&&,||其他任何事情都会使人分心。编辑:自从我发布了这篇文章以来,我已经看到它们的使用量有很小的增加。我仍然避免他们。

哈士奇WWW

and并且&&在C ++中在功能上相同。在and和or运营商是真正有效的C ++和语言标准的一部分。为了用具体示例详细说明其他答案,除了“可读性”之外,还有另一个原因要优先and于&&。当逻辑“与”的意思是明确地拼写“与”时,就消除了细微错误的可能性。考虑一下:int x = 3;int y = 4;// Explicitly use "and"if (x and y) {&nbsp; &nbsp; cout << "and: x and y are both non-zero values" << endl;}// Using "&&"if (x && y) {&nbsp; &nbsp; cout << "&&: x and y are both non-zero values" << endl;}// Oops! I meant to type "&&"!if (x & y) {&nbsp; &nbsp; cout << "&: x and y are both non-zero values" << endl;}else {&nbsp; &nbsp; cout << "How did I get here?" << endl;}所有这三个if语句都会编译,但是最后一个则意味着完全不同且意想不到的东西!如果您总是在使用and逻辑AND时使用,则绝不会意外输入单个“&”并使代码成功编译并以神秘的结果运行。另一个好的练习:尝试不小心遗漏“ and”字符,然后看看会发生什么。;)
打开App,查看更多内容
随时随地看视频慕课网APP