3 回答

TA貢獻1827條經驗 獲得超4個贊
它們起源于下在頭<iso646.h>。當時有一些鍵盤無法&&(例如)鍵入所需的符號,因此標題(包含#define)可以通過(在我們的示例中)定義and為來幫助他們這樣做&&。當然,隨著時間的流逝,這種使用變得越來越少了。
在C ++中,它們成為了所謂的替代令牌。你不會需要包括任何一個兼容的編譯器使用這些標記(如如此,C ++ - C頭的指明分數版本<ciso646>,為空)。除拼寫外,替代標記與常規標記類似。因此,在分析過程中and是完全相同一樣&&,它的拼寫同樣的事情只是用不同的方式。
關于它們的使用:由于很少使用它們,因此使用它們通常比有用的方法更加令人驚訝和混亂。我敢肯定,如果這是正常的話,它們會更容易閱讀,但是人們已經習慣了&&,||其他任何事情都會使人分心。
編輯:自從我發布了這篇文章以來,我已經看到它們的使用量有很小的增加。我仍然避免他們。

TA貢獻1799條經驗 獲得超6個贊
and并且&&在C ++中在功能上相同。在and和or運營商是真正有效的C ++和語言標準的一部分。
為了用具體示例詳細說明其他答案,除了“可讀性”之外,還有另一個原因要優先and于&&。當邏輯“與”的意思是明確地拼寫“與”時,就消除了細微錯誤的可能性。
考慮一下:
int x = 3;
int y = 4;
// Explicitly use "and"
if (x and y) {
cout << "and: x and y are both non-zero values" << endl;
}
// Using "&&"
if (x && y) {
cout << "&&: x and y are both non-zero values" << endl;
}
// Oops! I meant to type "&&"!
if (x & y) {
cout << "&: x and y are both non-zero values" << endl;
}
else {
cout << "How did I get here?" << endl;
}
所有這三個if語句都會編譯,但是最后一個則意味著完全不同且意想不到的東西!
如果您總是在使用and邏輯AND時使用,則絕不會意外輸入單個“&”并使代碼成功編譯并以神秘的結果運行。
另一個好的練習:嘗試不小心遺漏“ and”字符,然后看看會發生什么。;)
- 3 回答
- 0 關注
- 561 瀏覽
添加回答
舉報