什麼爲一個函數之間像不同:布爾表達式在while循環中的重要性?
int a, b;
bool p = false;
while (cin >> a >> b and not p) { // code }
// and:
int a, b;
bool p = false;
while (not p and cin >> a >> b) { // code }
什麼爲一個函數之間像不同:布爾表達式在while循環中的重要性?
int a, b;
bool p = false;
while (cin >> a >> b and not p) { // code }
// and:
int a, b;
bool p = false;
while (not p and cin >> a >> b) { // code }
不同的是,在C++中,在評估布爾條件的快捷方式被執行。
在and
的情況下,您知道如果第一個語句爲假,則整個輸出爲false。在這種情況下,第二個條件根本不會被評估。同樣,如果or
語句中的第一條語句評估爲true,則不評估第二條語句。
那麼,爲什麼這是有用的,除了在評估第二個陳述中節省的小的努力。其中一種情況是AND
其中,如果第一個表達式爲假,則可能不希望對第二個表達式進行評估。造成這種情況的原因是,如果第一個語句是錯誤的,則第二個表達式可能會被定義爲不正確
例如,訪問while
循環中的向量元素時,可能會遇到檢查某些條件的情況。除此之外,您還必須注意確保索引在矢量範圍內。所以,你可以只寫
while (i < vector.size() && condition(vector[i]))
你可以看到,如果第一部分的計算結果爲false
,然後程序會根據在條件訪問vector[i]
崩潰。但是,它沒有達到那一點。這只是短路操作人員的衆多用途之一。
'AND'和'OR'不是C++關鍵字。 '和'和'或'是。 – Steve
完美!謝謝你,我正在用我的頭破 – KooPad
@Steve:很好的指出。我個人從不使用'和'和'或'。我更喜歡'&&'和'||'。我只是爲了指出它們是布爾運算符而寫它們。 – therainmaker
是的訂單是重要的,因爲short circuit evaluation。
while (cin >> a >> b and not p)
將在輸入和如果操作成功,那麼它將評估p
。如果輸入失敗,那麼我們結束循環並從不檢查p
。在另一方面:
while (not p and cin >> a >> b)
將評估p
如果not p
是false
則條件的其餘部分將不會被執行。
'not'和'and'通常分別以'!'和'&&'的形式在C++中編寫。 –