0

世界!

私は現在、自分の独学でC ++を教えています。私はプリンシパルを読み、C++ を使用して実践しています。演習の 1 つのプログラムを作成しているときに、予期していなかったプログラムの結果に興味を持ちました。誰かがこれがなぜなのかを説明できれば、それは素晴らしいことです

以下のソースコード:

#include<iostream>

using namespace std;

int main()
{
    double val1 = 0;
    double val2 = 0;

    cout << "Enter two floating point values: ";
    cin >> val1 >> val2;

    cout << val1 + val2 << '\n'
         << val1 * val2 << '\n'
         << val1 / val2 << '\n';

    if(val1 > val2)
    {
        cout << val1 << " greater \n";
        cout << val2 << " lesser \n";
    }

    if(val1 == val2)
    {
        cout << val1 << " equals other floating point value \n";
        cout << val2 << "equals other floating point value \n";
    }

    else
    {
        cout << val2 << " greater \n";
        cout << val1 << " lesser \n";
    }

    system("PAUSE");
}

6.9 や 5.4 などと入力すると、次のような出力が得られます。

6.9 大きい 5.3 小さい

5.3 大きい 6.9 小さい

else ステートメントを if ステートメントに変更して問題を修正しましたが、else ステートメントを使用したときにこの出力が得られる理由を教えてください。ありがとう!

4

5 に答える 5

6

コードは次のようになります。

if(val1 > val2)
{
    cout << val1 << " greater \n";
    cout << val2 << " lesser \n";
}

else if(val1 == val2)
{ //^^you missed this else

    cout << val1 << " equals other floating point value \n";
    cout << val2 << "equals other floating point value \n";
}

else
{
    cout << val2 << " greater \n";
    cout << val1 << " lesser \n";
}

あなたがそれを逃した場合、論理は非常に明確ですelse。具体的には、最初のifブロックを実行します。elseあなたがそれを持っていない場合は、ブロックに行きますelse

于 2013-06-07T01:15:58.973 に答える
1

が 2番目elseにのみ接続されるため、とが等しくない限りif、コードはelseブロックに入ります。val1val2

使用したい動作を得るにはelse、2 番目の前にも使用する必要がありifます。

if(val1 > val2)
{
    cout << val1 << " greater \n";
    cout << val2 << " lesser \n";
}

else if(val1 == val2)
{
    cout << val1 << " equals other floating point value \n";
    cout << val2 << "equals other floating point value \n";
}

else
{
    cout << val2 << " greater \n";
    cout << val1 << " lesser \n";
}
于 2013-06-07T01:18:12.663 に答える
1

以下のコード:

if(val1 == val2) {
   cout << val1 << " equals other floating point value \n";
   cout << val2 << "equals other floating point value \n"; 
}

else {
   cout << val2 << " greater \n";
   cout << val1 << " lesser \n"; 
}

6.9 != 5.4、したがって、"else"部分に進み、2番目の出力が得られます

于 2013-06-07T01:15:50.930 に答える
0

else ステートメントは最も近い if ステートメントに関連付けられています。たとえば、あなたが書いた

if(val1>val2)
{
  // do something
} 
if(val1==val2)
{
   // do something
} 
else
{
   // do something
}

ここで「else」ステートメントは、最も近い if(val1==val2) に関連付けられています。'val1>val2' 条件がテストされる場合、最初に val1=10 & val2=9 と聞いてください。それは true (10>9 が true) であり、2 番目の条件で 'val1==val2' がテストされます。それは false (10==9 は false) であり、'else' は最も近い 'if' であることを意味します間違い。答えが「はい」の場合、「else」の下のステートメントが実行されます。だから平易な英語として考えてください。ELSE を使用して友人に条件を与える場合、友人は、IF に関連付けられた条件はどれかを尋ねなければなりません。したがって、あなたの欠点は、「else」を「if(val1 < val2)」として扱いたかったことです。else を「else if(val1 < val2)」に置き換えることができ、期待される出力が見つかります。

于 2013-06-07T15:12:22.260 に答える