世界!
我目前正在自学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语句时它会给出这个输出。谢谢!
答案 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
,因此除非else
和val1
相等,否则您的代码会进入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。会找到预期的输出。