else和if语句

时间:2013-06-07 01:13:21

标签: c++ if-statement runtime

世界!

我目前正在自学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语句时它会给出这个输出。谢谢!

5 个答案:

答案 0 :(得分: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区块。

答案 1 :(得分: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 :(得分:1)

您的else仅会附加到第二个if,因此除非elseval1相等,否则您的代码会进入val2区块。

要使用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";
}

答案 3 :(得分:0)

如果有的话,你有另一个工作的第二个如果是这样,每当==条件为假时,val2&gt; val1条件都会起作用。 可以有很多解决方案。

答案 4 :(得分:0)

else语句与最近的if语句相关联。例如,你已经写了

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

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