我知道==
被选为平等,=
被选为分配,因为他们认为人们做的任务比检查平等更多 - 但他们当然不认为会有更多比布尔逻辑有点小问题?
为什么不采用相反的方式,&
和|
是逻辑运算符?
答案 0 :(得分:9)
在命名语言后继续快速更改,例如引入&&
和||
运算符。在BCPL和B中,表达式的评估取决于上下文:在if和其他条件语句中将表达式的值与零进行比较,这些语言对and(&
)和or({{1}运营商。在普通的上下文中,它们按位运行,但在B语句中编译器必须评估|
if (e1 & e2) ...
,如果它不为零,则评估e1
,如果它也是非零,则根据if详细说明该语句。该要求在e2
和|上以递归方式递减&
和e1
内的运营商。这种“真值”上下文中的布尔运算符的短路语义似乎是可取的,但运算符的重载很难解释和使用。在Alan Snyder的建议下,我介绍了e2
和&&
运算符,以使机制更加明确。
请记住,C不是在真空中创造的;它的大部分奇怪之处都可以追溯到BCPL和B.