我正在使用 C++11 并且两者都在没有任何警告的情况下进行编译,女巫是最好的方法吗?
if(a && b)
或者
if(a and b)
我正在使用 C++11 并且两者都在没有任何警告的情况下进行编译,女巫是最好的方法吗?
if(a && b)
或者
if(a and b)
2.6 替代标记 [lex.digraph]
1 为某些运算符和标点符号提供了替代标记表示。16
2在该语言的所有方面,每个替代标记的行为分别与其主要标记相同,除了其拼写。17 替代标记集在表 2 中定义。
无法粘贴表 2,但它明确指出 Alternative: and
、 Primary &&
(与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 在这里打破了规则。
我更喜欢&&
而不是and
.
&&
广为人知并被接受,而许多人甚至不知道这and
是有效的 C++。and
(和朋友)。例如MSVC++。&&
and的运算符优先级||
在我脑海中根深蒂固。虽然and
和 与 和具有or
相同的优先级,但我不太习惯它们的简单事实使得阅读条件变得更加困难。&&
||
另一方面,and
对于那些学习过使用不使用&&
. 但有人可能会争辩说,这些人应该学习 C++ 而不是试图改变它的语法。
我更喜欢 if(a 和 b) ,因为总是有机会意外地将 if(a && b) 与 if(a & b) 混淆,给你带来很多麻烦..
作为同时使用 C 和 C++ 编程的人,除非有充分的理由在每种语言中使用不同的替代方案,否则我更愿意保持一致。尽管and
近二十年来一直是 C 标准的一部分,但它需要一个头文件,而不是内置到语言中。尤其是当一段代码可能用于多个项目时,这种麻烦是不值得的。
我从未见过使用and
over&&
会有优势的情况。我无法想象没有&密钥的现代开发系统,但也许如果您尝试在不寻常的平台上做某事(例如直接在严重受限的移动/嵌入式系统上编程),它会很有用。我还认为它降低了我的代码对于那些非常习惯于将其&&
视为逻辑和运算符的人的可读性。