我正在使用C ++ 11并且两者都在没有任何警告的情况下进行编译,这是最好的方法吗?
if(a && b)
或
if(a and b)
答案 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++。and
(和朋友)。例如MSVC++。&&
和||
的运算符优先级根深蒂固。虽然and
和or
具有与&&
和||
相同的优先级,但我对它们习惯较少的简单事实使得阅读条件变得更加困难。< / 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; 键的现代开发系统,但是如果你想在一个不寻常的平台上做某事(比如在严格限制的移动/嵌入式系统上直接编程)它会有用的。我还认为这会降低我的代码对于那些习惯于将&&
视为逻辑和运算符的人的可读性。