我应该使用"&&"或"和"?

时间:2013-06-14 14:00:00

标签: c++ language-lawyer boolean-logic

我正在使用C ++ 11并且两者都在没有任何警告的情况下进行编译,这是最好的方法吗?

if(a && b)

if(a and b)

4 个答案:

答案 0 :(得分:17)

  

2.6替代令牌[lex.digraph]

     

提供了1个替代令牌表示   一些运营商和标点符号.16

     

2 在语言的各个方面,每个替代令牌都表现出来   同样,分别作为其主要令牌,但拼写除外   表2中定义了替代令牌集。

无法粘贴表格2,但它明确指出备选方案:and,主要&&or||相同)。

所以他们完全相同。 如果你想试着说服自己一个人比另一个人“更好”,那就是你的事。如果其他人试图争论这样,他们最好有充分的理由。

编辑:上述表2:

Table 2 — Alternative tokens
Alternative Primary
<%          {
%>          }
<:          [
:>          ]
%:          #
%:%:        ##
and         &&
bitor       |
or          ||
xor         ˆ
compl       ~
bitand      &
and_eq      &=
or_eq       |=
xor_eq      ˆ=
not         !
not_eq      !=

编辑:也许值得注意,根据Sebastian Redl,MS违反了规则。

答案 1 :(得分:8)

我更喜欢&&而不是and

  • &&广为人知并被接受,while many don't even know that and is valid C++
  • 默认情况下,某些IDE不接受and(和朋友)。例如MSVC++
  • 至少对我而言,&&||的运算符优先级根深蒂固。虽然andor具有与&&||相同的优先级,但我对它们习惯较少的简单事实使得阅读条件变得更加困难。< / LI>

另一方面,and更加冗长,对于那些使用不使用&&的语言学习编程的程序员来说,{{1}}可能更容易使用。但有人可能会争辩说,这些人应该学习C ++,而不是试图改变它的snytax。

答案 2 :(得分:5)

我更喜欢     如果(a和b) ,因为总有机会意外混淆     if(a&amp;&amp; b) 同     如果(a&amp; b) ,给你带来很多麻烦..

答案 3 :(得分:4)

作为使用C和C ++编程的人,除非有充分的理由在每种语言中使用不同的替代方案,否则我宁愿保持一致。虽然and已经成为近二十年来C标准的一部分,但它需要一个头文件而不是内置到该语言中。特别是当一段代码可能用于多个项目时,麻烦就是不值得。

我从未见过使用and优于&&会有利的情况。我无法想象没有&amp; 键的现代开发系统,但是如果你想在一个不寻常的平台上做某事(比如在严格限制的移动/嵌入式系统上直接编程)它会有用的。我还认为这会降低我的代码对于那些习惯于将&&视为逻辑和运算符的人的可读性。