0

私は C++ を初めて使用し、これは私が作成した最初のプログラムのようなもので、Visual C++ 2010 Express を使用しました。重量換算の物です。if ループ、else if ループ、else があります。コードは次のとおりです。

#include <iostream>

using namespace std;

int main() { 
float ay,bee;
char char1;
cout << "Welcome to the Ounce To Gram Converter" << endl << "Would you like to convert [O]unces To Grams or [G]rams To Ounces?" << endl;
start:
cin >> char1;

if (char1 = "G" ||"g"){
cout << "How many grams would you like to convert?" << endl;
cin >> bee;
cout << bee << " grams is equal to: " << bee*0.035274 << " ounces." << endl; goto start;
}

else if (char1 = "o"||"O"){ 
cout << "How many ounces would you like to convert" << endl;
cin >> ay;
cout << ay << " ounces is equal to: " << ay/0.035274 << " grams." << endl; goto start;
}   

else{
    cout << "Error 365457 The character you entered is to retarded to comprehend" << endl;
goto start;
}

cin.ignore();
cin.get();
return 0;
    }

「g」を入力すると、これが実行されます。

    if (char1 = "G" ||"g"){
cout << "How many grams would you like to convert?" << endl;
cin >> bee;
cout << bee << " grams is equal to: " << bee*0.035274 << " ounces." << endl; goto start;
}

あるべきように

ただし、「o」を入力すると、次のように実行されます。

    if (char1 = "G" ||"g"){
cout << "How many grams would you like to convert?" << endl;
cin >> bee;
cout << bee << " grams is equal to: " << bee*0.035274 << " ounces." << endl; goto start;
}

これの代わりに:

    else if (char1 = "o"||"O"){ 
cout << "How many ounces would you like to convert" << endl;
cin >> ay;
cout << ay << " ounces is equal to: " << ay/0.035274 << " grams." << endl; goto start;
}

「h」などのランダムなものを入力しても、次のことが起こります。

    if (char1 = "G" ||"g"){
cout << "How many grams would you like to convert?" << endl;
cin >> bee;
cout << bee << " grams is equal to: " << bee*0.035274 << " ounces." << endl; goto start;
}

これの代わりに:

    else{
    cout << "Error 365457 The character you entered is to retarded to comprehend" << endl;
goto start;
}

私が何を間違えたのか教えてください。

4

1 に答える 1

3

char1 = "o"||"O""O"は null ではないため、常に true と評価されます。

char1 == 'o' || char == 'O'if ステートメント全体で andを使用したいと考えています。

=は割り当てで==あり、等価チェックであることに注意してください。==等しいかどうかをテストする=ときと代入するときに使用します。C および C++ では=、割り当ての値を返すチェックで使用できます。この値は 0 ではないため、true と評価されるため、if ステートメントが実行されます。

于 2012-08-23T11:21:33.740 に答える