我知道==
被選爲平等,=
被分配,因爲他們認爲人們比檢查平等做了更多的任務---但他們肯定沒有想到會有比布爾邏輯更多的擺弄?爲什麼K&R做&&,||邏輯和&,|按位,而不是相反?
爲什麼不走相反的路,&
和|
是邏輯運算符?
我知道==
被選爲平等,=
被分配,因爲他們認爲人們比檢查平等做了更多的任務---但他們肯定沒有想到會有比布爾邏輯更多的擺弄?爲什麼K&R做&&,||邏輯和&,|按位,而不是相反?
爲什麼不走相反的路,&
和|
是邏輯運算符?
從horse's mouth:語言已被命名後
的快速變化不斷,例如引進&&
和||
運營商。在BCPL和B中,表達式的評估取決於上下文:在將表達式的值與零進行比較的if和其他條件語句中,這些語言對和和(或|
)運算符進行了特殊解釋。在普通情況下,它們按位運算,但是在B語句中,編譯器必須評估e1
,如果它不爲零,則評估e2
,如果它也不是零,請詳細說明依賴於if的語句。該要求在&
和|上遞歸遞減e1
和e2
內的運營商。布爾運算符在這種「真值」上下文中的短路語義似乎是可取的,但運算符的超載很難解釋和使用。在Alan Snyder的建議下,我介紹了&&
和||
運營商,以使該機制更加明確。
請記住,C不是在真空中創建的;它的很多奇怪可以追溯到BCPL和B.
我會接受這一點,但@sarnold真的首先得到答案。 –
@luxun,如果您覺得Ritchie的描述足夠好,請隨時接受。約翰花時間複製並格式化引文。 :) – sarnold
你「知道」===和'='是這樣選擇的嗎?爲什麼?這是什麼來源?該來源是否也談論'&&'和'&'? –
我覺得'==','&&','||'所有邏輯相關都是有道理的。但是,我們有'<', '>'與'<<', '>>'。 – nhahtdh
我知道我在某處讀過它 - 可能是ANSI C書的前言? –