我有一個if語句看起來如下:如果語句不似乎在檢查其他&&在聲明中
int count=0;
string Check;
if ((count==4 && Check!="-s")||(count==4 && Check!="-S"))
如果count
等於4和Check
等於"-s"
或"-S"
它仍然進入,因爲count == 4
這個if
聲明。它完全似乎忽略了第二部分。有什麼我做錯了嗎?
我有一個if語句看起來如下:如果語句不似乎在檢查其他&&在聲明中
int count=0;
string Check;
if ((count==4 && Check!="-s")||(count==4 && Check!="-S"))
如果count
等於4和Check
等於"-s"
或"-S"
它仍然進入,因爲count == 4
這個if
聲明。它完全似乎忽略了第二部分。有什麼我做錯了嗎?
那麼,如果Check
是"-S"
,那麼它甚至不會檢查第二對條件,因爲您使用||
進行檢查。對於相反的情況也是如此。如果一個人是假的,另一個是真的。將其替換爲&&
。
int count = 4;
string Check = "-S";
if((count == 4 && // count is 4, alright.
Check != "-s") || // Check is "-S", alright I'm done thanks to || (OR)
(count == 4 &&
Check != "-S"))
{
// ...
}
int count = 4;
string Check = "-s";
if((count == 4 && // count is 4, alright.
Check != "-s") || // Check is "-S", time to check the other condition pair...
(count == 4 && // count is 4, alright.
Check != "-S")) // Check is "-s", which is different from "-S", perfect.
{
// ...
}
現在修正版本:
int count = 4;
string Check = "-S";
if((count == 4 && // count is 4, alright.
Check != "-s") && // Check is "-S", different from "-s", now on to the other condition!
(count == 4 && // count is 4, alright.
Check != "-S")) // Check is "-S"... oh dang! No executed code for you.
{
// ...
}
如果count == 4
和Check == "-s"
,則體現出了||
右邊是真實的。如果count == 4
和Check == "-S"
,則表示||
左側的表達式爲真。所以你是真實的或真實的。因此,你的if塊被執行。
總是會出現這種情況,即Check!="-s"
或Check!="-S"
。因此,您的if語句相當於if (count==4)
。
您應該使用!strcmp(Check,「-s」)和!strcmp(Check,「-S」)而不是!=。
如果你使用==你比較指針,那就是你想要的。指針總是會有所不同,因此您的第二個參數將始終爲真。
嗯,這就是如果你正在處理char *,而不是類型字符串,它是在運算符==重載的C++中的
你想輸入if body當且僅當檢查是!=從-s或-S和count是= 4對嗎?
if ((Check!="-s" && Check!="-S") && count==4)
應該工作。
或
if (Check.tolower() !="-s" && count==4)
應該工作。
(不記得函數的名稱以小寫的字符串,你得看它)
希望這有助於。
可能更清楚使用方法:
if (count==4 && Check!="-s" && Check!="-S")
對於比較C++字符串,則必須使用'比較()'funcion這樣的:http://www.cplusplus.com/reference/string/字符串/比較/ – jlledom
@JoanLledó:C++'std :: string'類重載'=='運算符,以便它在這種情況下「神奇地」起作用。 –
嘗試:if(count == 4 && Check!=「 - s」&& Check!=「 - S」) – Tom