2017-12-24 8 views
-6

このコードにはこれ以上のものがありますが、これは機能しない唯一の部分です。私が "Change"変数に何を入れても、それは最初のif文のコードを私に与えるだけです。これをどうすれば解決できますか?文が使用されるif文には影響しません

std::cout << "Do you want to change any of this information? "; 
std::string answer; 
std::string x = "yes"; 
std::cin >> answer; 
if(answer == x){ 
    std::cout << "What would you like to change:\nname(1), password(2), email(3), country(4), or cancel(5)?\nType the number of which you want to change: "; 
    std::cin >> Change; 
    if(Change = 1){ 
     std::cout << "Please type your new first name: "; 
     std::cin >> FirstName; 
     std::cout << "Middle Initial: "; 
     std::cin >> MiddleInitial; 
     std::cout << "Last Name: "; 
     std::cin >> LastName; 
     std::cout << "Thank you for signing up for Rowan's Demo Company!"; 
    } 
    if(Change = 2){ 
     std::cout << "Please type your new password: "; 
     std::cin >> Password; 
     std::cout << "Thank you for signing up for Rowan's Demo Company!"; 
    } 
    if(Change = 3){ 
     std::cout << "Please type your new email: "; 
     std::cin >> Email; 
     std::cout << "Thank you for signing up for Rowan's Demo Company!"; 
    } 
    if(Change = 4){ 
     std::cout << "Please type your new country: "; 
     std::cin >> Country; 
     std::cout << "Thank you for signing up for Rowan's Demo Company!"; 
    } 
    if(Change = 5){ 
     std::cout << "Thank you for signing up for Rowan's Demo Company!"; 
    } 
}else{ 
    std::cout << "Thank you for signing up for Rowan's Demo Company!"; 
    } 
return 0; 

}

+0

ヒント演算子==、not = – OldProgrammer

+0

最初に '=='を使用し、 '='に切り替えました。どうして?あなたの本の中でそれぞれが何を意味するのか見てください。 –

+0

これは、これらの 'if'節をすべて実行しないのですか?最初のものだけではありません。 –

答えて

2

ああ古典的な間違い。比較のために=を使用することはできません。代わりに==を使用する必要があります。単一の=は割り当てのためのものであり、常に入力を上書きします。

ifステートメントif (Change = 1)が評価される瞬間、Changeは値1を取得し、発現はさらにifの本体を実行するtrueに評価されます。

覚えていること:=は、==と比較しています。

+0

よろしいですか?だから私は= int x = 5と比較するための==のようなものに対してのみ使うでしょうか? – Theroarx

+0

@Theroarx正確に – Fureeish

+1

捕捉される可能性を減らす1つの方法は、 'if(1 == Change)'(オペランドの順序を入れ替える)のような比較を行うことです。 '=='の代わりに '='を使うのは間違っていると、コンパイラはそれを診断します(定数リテラルに代入することはできません)。明らかに、これは、両方を割り当てることができる2つの変数の値を比較するためには機能しません。 – Peter

0

あなたは...他...他の場合は()の代わりにあなたが場合は()を使用する必要があります場合とで、条件式のため==(比較演算子)の=(代入演算子)を使用していますあなたの第1レベルの入れ子に! (必須ではありませんが、ここで必要です) ifステートメントの中には、(ステートメントを簡略化するため)ブロックが含まれているので、ブロック({.......})を削除することもできます。 ! 例:

両方とも同じ結果が得られます!

if(a==1) 
    cout<<" you entered 1"; 
     // or 
if(a==1) { 
    cout<<"you entered 1"; 
} 
関連する問題