私は以下のステートメントを作成しようとしています。 年齢が20歳以上50歳未満の場合は、続行します。 年齢が20未満で50より大きい場合、エラーが再開します。 それ以外の場合は、エラー、再起動します。ステートメントが他のステートメントにスキップする場合else else
しかし、なんらかの理由で、else if条件のすぐ上をスキップし、そのままelseに進みます。年齢が「19」を入力すると「エラー」が出力され、年齢が51を入力すると「エラー」が出力されます。どうしたの?
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int plyAgeCreate() {
int plyAge = 0;
cout << "Enter an age" << endl;
cin >> plyAge;
//If age is greator than 20 and less than 50, accept.
//Else if age is less than 20 but greator than 50, decline.
//else, error. Restart.
if (plyAge >= 20 && plyAge <= 50) {
cout << "Welcome!" << endl;
}
else if (plyAge < 20 && plyAge > 50) { //Why is this being skipped?
cout << "Between 20 and 50" << endl;
return plyAgeCreate();
}
else {
cout << "Error" << endl;
return plyAgeCreate();
}
}
int main()
{
plyAgeCreate();
system("pause");
return 0;
}
このような問題を解決する適切なツールは、デバッガです。スタックオーバーフローを尋ねる前に、コードを一行ずつ進める必要があります。詳しいヘルプは、[小さなプログラムをデバッグする方法(Eric Lippert)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を参照してください。最低でも、あなたはあなたが行った観察と一緒に、[編集]あなたの質問あなたの問題を再現[、最小完全、かつ検証](http://stackoverflow.com/help/mcve)の例を含むようにする必要があります\しますデバッガ。 –
'if(plyAge <20 && plyAge> 50)'があります。同時に20 **未満と** 50以上の数字は何ですか? –
私はそれが分かりました、私はちょうど何かを把握しようとしています。他の人の意見を聞き、例を見るのが本当に助けになります。このコードは、私が読んだことについての感情を経験し、経験を通して学ぶことを試みているだけのものではありません。私はあなたのリンクをチェックアウトします、私はまだデバッグについて考え始めていない、助けてください! @ PM77-1ああ私の神 – Tseronaught