![](/img/trans.png)
[英]Why does this if-statement combining assignment and an equality check return true?
[英]Equality comparison in if-statement
抱歉這個問題,這是我的第一個C ++項目,我有些困惑。 我要用戶輸入3個單獨的東西。 例如,我從80開始。我問用戶3個問題。 1)你喜歡藍色還是黃色? 鍵入1代表藍色,2代表黃色。 如果用戶輸入1表示藍色,則將數字80乘以2。如果用戶輸入2表示黃色,則將80乘以3。
有人可以讓我知道這是否正確嗎? 謝謝您,對於初學者的問題再次表示抱歉。
cout << "Please enter a color blue or yellow. Type 1 for Blue, 2 for Yellow";
cin >> bp1;
// Multiply by 2 if Blue is chosen, 3 if Yellow is chosen.
if (bp1 = 1)
num = num*2;
if (bp1 = 2)
num = num*3;
你打算寫比較運算符==
if (bp1 == 1)
if (bp1 == 2)
// ^^
if (bp1=1)
始終會被operator=
評估為true
您的if陳述式有問題
它一定是這樣的:
if (bp1 == 1)
num = num*2;
if (bp1 == 2)
num = num*3;
歡迎來到C ++世界! 您肯定走在正確的道路上,但是有一些問題。 首先,您在if語句中使用的運算符是賦值運算符,因此您的語句將始終返回true。 實際上,它應該是比較運算符(==)。 其次,我建議在此處使用if-else if語句,因為您可能不需要同時檢查兩次。 以下內容就足夠了:
if(bp1 == 1)
{
num = num * 2;
}
else if(bp1 == 2)
{
num = num * 3;
}
更簡單:
代替:
if(bp1 == 1)
num = num * 2;
else if (bp1 == 2)
num = num * 3;
你可以寫這個
num = num * (bp + 1)
甚至
num *= (bp + 1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.