符号vs单词运算符例如('||'vs'或'和'!'vs'not')

def*_*ode 10 c++

我认为or是c ++中的关键字.

可能是我最近做了太多的python代码,但我发现or它比可读性更强||,xor更易读^.

使用符号运算符替代词这个词是个好主意吗?
为什么我看不到他们使用更多?

jal*_*alf 8

每个 C++ 程序员都知道&&||

并非每个 C++ 程序员都意识到andor是合法的替代方案。

仅出于这个原因,您最好坚持使用常用的内容。

它很容易习惯,所以我想说这没什么大不了的,而且绝对不值得让代码的读者感到困惑。

  • @Martin:我不相信这个论点。如果不了解或不研究,您就会迷失 -> 在 C++ 中的含义。这没有理由不使用->。C++复杂吗?如果我们可以重做历史,我们会只提供一种拼写逻辑与的方法吗?是的,是的,毫无疑问,但我们大多数人没有能力改变这些;但理解“and”并不难,如果您已经理解了“&&”,那么应该花费不到 5 分钟的时间。 (4认同)
  • @martin:我认为人们更有可能根本不知道“and”和“or”是关键字。然后他们将尝试寻找一个可以理解这种未知语法的宏。至于那些确实知道这些关键字存在的人,我认为他们也知道它们的*含义*。 (2认同)

sus*_*att 7

令人不满意的答案是你应该使用符号运算符,因为其他人都这样做.

一个可以说是更明智的理由是它们从代码的其余部分中脱颖而出.

  • 虽然像if,else等类似地突出显示,但也可以[有益](http://stackoverflow.com/q/4672934),特别是对于将它们突出显示为关键字的编辑器(它应该是, C++). (3认同)

Nik*_*Nik 7

这些关键字是1995 年添加到标准(标准 C)中的 替代令牌。请参阅此处的详细信息https://en.wikipedia.org/wiki/C_alternative_tokens

为什么添加关键词:

替代标记允许程序员使用 C 语言按位和逻辑运算符,否则这些运算符可能很难在某些国际键盘和非 QWERTY 键盘上键入。

它们是如何添加的:

它们在 C 标准库的头文件中作为一组宏常量实现iso646.h

iso646.h头定义了 11 个宏,包括or.

那么 C++ 呢:

上述标识符是操作符关键字ISO C++ programming language,不需要包含在头文件中。为了保持一致性,C++98 standard提供了 header <ciso646>。然而,后一个文件没有任何效果,是空的。

因此,C/C++ 语言中存在关键字是有历史原因的,与使用什么更好无关。如上所述,您应该遵守编码约定。


Fre*_*urk 5

使用符号运算符替代词这个词是个好主意吗?

完全取决于您的代码的目标受众 - 人员和工具.人们可能不习惯他们,有些工具无法识别他们.(有时这些工具使用<ciso646>将它们定义为宏.)

我已经开始使用"和"和"或"更多,特别是在C++和Python之间切换时,它更具可读性.语言之间的一些额外的一致性比我最初认为的更重要,但更重要的是,&&和|| 是控制结构而不是操作员(即短路),从而使它们与运营商区别开来.

(是的,从技术上讲,它们是C++中的运算符,但它们更类似于if,else,return,while等等,而不是+, - ,*和其他运算符.逗号和条件运算符是类似的控制结构,并且它们可能并不是巧合,它们经常被发现令人困惑,或者至少比单独的语句和if/else更不易读.)

但是,我很少在为SO编写的新代码中使用它们,例如,因为我还没有遇到过这样一个问题:提出这个方面的问题比SO的C++读者可读更重要.