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

时间:2011-01-12 19:01:52

标签: c++

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

可能是我最近做了太多的python代码,但我发现or||更具可读性,xor^更具可读性。

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

7 个答案:

答案 0 :(得分:7)

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

一个可以理解的更明智的理由是,它们在代码的其余部分中脱颖而出。

答案 1 :(得分:5)

  

对符号运算符使用替代词是否是一个好主意?

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

我开始使用“和”和“或”更多,特别是在C ++和Python之间切换时,它更具可读性。语言之间的一些额外的一致性比我最初认为的更重要,但更重要的是,&& amp;和|| 控制结构而不是运算符(即短路),从而使它们与运算符区分开来。

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

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

答案 2 :(得分:3)

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

并非每个C ++程序员都知道andor是合法的选择。

仅凭这个原因,你最好坚持使用常用的东西。

很容易习惯,所以我说这不是什么大问题,绝对不值得让你的代码读者感到困惑。

答案 3 :(得分:3)

这些关键字是替代标记,它们于1995年添加到标准(标准C)中。 https://en.wikipedia.org/wiki/C_alternative_tokens

为什么添加关键字:

  

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

它们的添加方式:

  

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

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

关于C ++:

  

上述标识符是ISO C++ programming language中的运算符关键字,不需要包含头文件。为了保持一致,C++98 standard提供了标题<ciso646>。但是,后一个文件没有任何作用,为空。

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

答案 4 :(得分:2)

我的第一个问题是or bit-wise or |Boolean shortcut or ||

我打赌我的团队中有六个人不得不去查找。

所以我认为坚持标准惯例更好 因为这是人们习惯的。编程的重点不是含糊不清。

答案 5 :(得分:1)

这些关键字仅适用于无法处理特殊字符|&等的终端。无论它们是否构成更易读的代码都是有争议的。

如果你知道||的含义,那么or的可读性就不如||。如果你知道C ++的基本原理,即语法,那么在我看来,一个人的可读性不是另一个。

此外,大多数情况下,C ++程序员使用关键字的特殊字符替代品。因此,除非您正在启动项目并且正在设置规则,否则通常最好不要成为项目中的例外。

答案 6 :(得分:-2)

||在C ++中是怎么说“boolean or”的。如果您实际编写or,那么即使您可以让编译器接受它,您也会混淆代码的读者。

我真的很同情你的论点,灵巧。老实说。 C ++代码非常难看(而恕我直言,很难遵循),因为它依赖于类似线路噪声的符号系统。但这就是C ++哲学。如果你想要很好的英语可用代码,那么 C ++就不是你的语言。试试Ada

我在这里很认真。在很多方面,阿达是一种更好的语言。这是其中之一。但是如果你要坚持使用C ++,你需要接受它。尝试用C ++编写Ada(或Pascal)并不比尝试在Ada中编写C ++或Fortran更好。