第一學期在這裏學生。我對bitand(&)與邏輯和(& &)之間的差異以及與bitor(|),邏輯或(||)和Xor(^)相同的差異感到困惑。具體來說,我有一些我認爲需要||的代碼或& &功能,但..顯然不是?這裏是有問題的代碼:有人可以解釋&和&&的區別嗎?
cout << "Please enter your biological sex (M or F): " << endl;
cin >> sex;
//Repetition Structure
while (toupper(sex) != 'M' && 'F')
{
cout << "Invalid entry. Please enter your biological sex (M or F): " << endl;
cin >> sex;
} //end while
我試着用||起初,不管我怎麼回答,它都給了我「無效輸入」的回覆。我在論壇上四處張望,發現& &會更好,並嘗試使用它。它起初 - 工作。然後,由於沒有明顯的原因,它停止以'F'作爲答案(代碼沒有改變)。
爲了解決這個問題,我嘗試使用XOR(^),它失敗了,然後BITAND(&,而不是& &),這顯然使得它正常工作一次。但是,我已經看到警告,您仍然可以使用&或& &得到正確的答案,但其中一個不會等於另一個,並可能在稍後導致問題。這就是爲什麼我需要澄清(也只是知道的好東西)。
更新:由於這被標記爲重複,我會澄清我的意圖:我想知道更多關於&和& &,爲什麼你用一個,而不是其他,以及相同的信息進行^, |和||。帶標籤的線程有使用一個與另一個的例子,但他們沒有解釋操作本身的細節。由於我很難理解行動本身的性質,這些解釋至關重要;僅僅舉例並不能說明我的理解。
'toupper(sex)!='M'&& toupper(sex)!='F'' –
'&&'F''總是對的 – Raindrop7
任何*非零*積分值是可以考慮的'C++'中的ed ** true **。字符('char')基本上是整數,所以所有字符(除了空字符''\ 0'')都被計算爲** true **。所以,當你去'&&'F'時,你在說'&& true'。 – Galik