0

世界!

我目前正在自学 C++。我正在阅读原理和使用 C++ 进行练习,并且在为其中一个练习编写程序时,我对一个我没想到的程序的结果感到好奇。如果有人能解释为什么会这样就好了

源代码如下:

#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

下面的代码:

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"分开并给你第二个输出

于 2013-06-07T01:15:50.930 回答
1

else唯一的附加到第二个if,所以你的代码进入else块,除非val1val2相等。

要获得您想要使用的行为,您else还必须在第二个之前使用它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 回答
0

你有一个 else 为第二个工作,如果所以 val2>val1 条件每次 == 条件为假时都会工作。可以有很多解决方案。

于 2013-06-07T11:35:08.940 回答
0

else 语句与最近的 if 语句相关联。例如你写过

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

这里的“else”语句与最近的 if(val1==val2) 相关联。听着,现在首先说 val1=10 & val2=9,如果 'val1>val2' 条件将被测试。它是真的(10>9 是真的)然后第二个如果条件 'val1==val2' 将被测试它是假的(10==9 是假的),现在 'else' 意味着最接近的 'if' 是错误的。如果答案是肯定的,则执行“其他”下的陈述。所以认为是简单的英语。当你用 ELSE ,, 给你的朋友一个条件时,你的朋友必须问哪个是与 IF 相关的条件。所以你的错是你想把 'else' 当作 'if(val1 < val2)' 你可以用 'else if(val1 < val2)' 替换 else 并且会找到预期的输出。

于 2013-06-07T15:12:22.260 回答