下記のC++プログラムを実行するたびに、たとえば、84や76の等級値を入力しても、同じ出力が "A"になります。出力が常に「A」で、グレードの文字の値ではなく、数字グレードの入力に基づいていなければならない理由については混乱しています。私はそれが私のコードの中で論理的な誤りである可能性が高いことを知っていますが、私はなぜそれを理解するようです。C++:保存されたchar値を画面に表示
char letterGrade;
int scoreGrade;
cout << "Enter Course Name: ";
cin >> courseName;
cout << "Score Grade Recieved: ";
cin >> scoreGrade;
while (scoreGrade < 0 || scoreGrade > 100) {
cout << "Invalid Entry, Enter Score Grade: ";
cin >> scoreGrade;
}
if (scoreGrade >= 90 || scoreGrade <= 100) {
letterGrade = 'A';
}
else if (scoreGrade >= 80 || scoreGrade < 90) {
letterGrade = 'B';
}
else if (scoreGrade >= 70 || scoreGrade < 80) {
letterGrade = 'C';
}
else if (scoreGrade >= 60 || scoreGrade < 70) {
letterGrade = 'D';
}
else
letterGrade = 'F';
cout << letterGrade;
このような問題を解決する適切なツールはデバッガーです。スタックオーバーフローを尋ねる前に、コードを一行ずつ進める必要があります。詳しいヘルプは、[小さなプログラムをデバッグする方法(Eric Lippert)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を参照してください。最低限、問題を再現する[最小、完全、および検証可能](http://stackoverflow.com/help/mcve)の例と、その問題を再現するためのデバッガ。 –
私はこの状態の意味を説明しようとします: 'scoreGrade> = 90 || scoreGrade <= 100'。この条件は、 'scoreGrade> = 90'が真**または**' scoreGrade <= 100'のいずれかであると評価されます。たとえば、 'scoreGrade'が1000000で' scoreGrade'が-1000000000000であれば真となります。あなたがおそらく望むのは、90と100の間であれば 'A'を与えることですが、それは正しい方法ではありません。私は正しい方法を教えていません、なぜなら、これはあなたが把握するための素晴らしいチャレンジだと思うからです。 – nbro