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