2012-05-30 29 views
6

我知道==被選爲平等,=被分配,因爲他們認爲人們比檢查平等做了更多的任務---但他們肯定沒有想到會有比布爾邏輯更多的擺弄?爲什麼K&R做&&,||邏輯和&,|按位,而不是相反?

爲什麼不走相反的路,&|是邏輯運算符?

+7

你「知道」===和'='是這樣選擇的嗎?爲什麼?這是什麼來源?該來源是否也談論'&&'和'&'? –

+0

我覺得'==','&&','||'所有邏輯相關都是有道理的。但是,我們有'<', '>'與'<<', '>>'。 – nhahtdh

+0

我知道我在某處讀過它 - 可能是ANSI C書的前言? –

回答

9

horse's mouth:語言已被命名後

的快速變化不斷,例如引進 &&||運營商。在BCPL和B中,表達式的評估取決於上下文:在將表達式的值與零進行比較的if和其他條件語句中,這些語言對和和(或 |)運算符進行了特殊解釋。在普通情況下,它們按位運算,但是在B語句中,編譯器必須評估 e1,如果它不爲零,則評估 e2,如果它也不是零,請詳細說明依賴於if的語句。該要求在 &和|上遞歸遞減 e1e2內的運營商。布爾運算符在這種「真值」上下文中的短路語義似乎是可取的,但運算符的超載很難解釋和使用。在Alan Snyder的建議下,我介紹了 &&||運營商,以使該機制更加明確。

請記住,C不是在真空中創建的;它的很多奇怪可以追溯到BCPL和B.

+0

我會接受這一點,但@sarnold真的首先得到答案。 –

+0

@luxun,如果您覺得Ritchie的描述足夠好,請隨時接受。約翰花時間複製並格式化引文。 :) – sarnold

相關問題