为了账号安全,请及时绑定邮箱和手机立即绑定

逻辑运算符的书面版本

逻辑运算符的书面版本

C++
尚方宝剑之说 2019-10-18 14:53:44
这是我见过的唯一地方and,or并且not在C ++中被列为实际的运算符。当我在NetBeans中编写一个测试程序时,我得到了红色下划线,好像有语法错误,并认为该网站是错误的,但是NetBeans是错误的,因为它按预期进行了编译和运行。我可以看到!它受到青睐,not但是and&& 的可读性or似乎比他们的语法兄弟更好。为什么存在这些版本的逻辑运算符,为什么似乎没有人使用它?这是真正有效的C ++还是该语言随附的与C的某种兼容性?
查看完整描述

3 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

它们起源于下在头<iso646.h>。当时有一些键盘无法&&(例如)键入所需的符号,因此标题(包含#define)可以通过(在我们的示例中)定义and为来帮助他们这样做&&。当然,随着时间的流逝,这种使用变得越来越少了。


在C ++中,它们成为了所谓的替代令牌。你不会需要包括任何一个兼容的编译器使用这些标记(如如此,C ++ - C头的指明分数版本<ciso646>,为空)。除拼写外,替代标记与常规标记类似。因此,在分析过程中and是完全相同一样&&,它的拼写同样的事情只是用不同的方式。


关于它们的使用:由于很少使用它们,因此使用它们通常比有用的方法更加令人惊讶和混乱。我敢肯定,如果这是正常的话,它们会更容易阅读,但是人们已经习惯了&&,||其他任何事情都会使人分心。


编辑:自从我发布了这篇文章以来,我已经看到它们的使用量有很小的增加。我仍然避免他们。


查看完整回答
反对 回复 2019-10-18
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

and并且&&在C ++中在功能上相同。在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”字符,然后看看会发生什么。;)


查看完整回答
反对 回复 2019-10-18
  • 3 回答
  • 0 关注
  • 517 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信