用C ++编写的程序忽略if​​和else语句

时间:2017-07-11 01:29:14

标签: c++ visual-studio if-statement cin

我对C ++很陌生。我上周开始自学C ++,直到现在,我还没有遇到任何实际问题。 我使用Microsoft Visual Studio 2017,我遇到if和else语句的问题。你知道,我正在制作这个非常有限的计算器。基本上,程序为您提供了4种基本的数学运算,您可以通过输入1,2,3或4来选择要用于计算的运算。然后,它运行另一个程序,然后您可以计算该程序。 (例如:2表示减法,如果输入2,则运行减法计算器) 这是该计划的代码。

#include "stdafx.h"
#include "iostream"
using namespace std;

int main(){
int add = 1; 
int sub = 2; 
int mul = 3; 
int div = 4; 
cout << "Extremely Limited C++ Calculator: Enter a number between one and 
four to start calculating and press enter." 
    << '\n' 
    << "LEGEND" 
    << '\n' << "1 = Addition"
    << '\n' << "2 = Subtraction"
    << "\n" << "3 = Multiplication"
    << '\n' << "4 = Division" 
    << '\n' << "Operation: "; 
if (cin >> add) {
system("start C:\\CalculatorApps\\addition.exe");
return 0;
}
if (cin >> sub) {
system("start C:\\CalculatorApps\\subtraction.exe");
return 0; 
}
if (cin >> mul) {
system("start C:\\CalculatorApps\\multiplication.exe");
return 0; 
}
if (cin >> div) {
system("start C:\\CalculatorApps\\division.exe");
return 0; 
}
}

所以我完成了add.exe和subtraction.exe,但问题是无论我输入什么号码,它都会运行add.exe。在减法计算器中,我尝试让用户选择是否要减去2个以上的数字,但这也没有结束,因为它忽略了if语句。我还有一个在减法计算器和主程序上有一个else语句,它带你到显示文本读数的计算器,他们输入的数字不是一个有效的选择,并输入一个有效的选择,但即使这被忽略通过该计划。现在,也许我在互联网上看起来不够努力,但我找不到帮助我的人。如果你知道答案,请告诉我,但是用我能理解的字眼(毕竟我),或者请把我链接到另一个已经回答的问题来解决我的问题。 先谢谢你了!

1 个答案:

答案 0 :(得分:0)

cin是类istream的对象,表示标准输入流。它对应于cstdiostdin。流的运算符>>重载返回对同一流的引用。可以通过转换运算符在boolean条件下将流本身评估为truefalse

cin提供格式化的流提取。操作cin >> x;

其中&#34; x&#34;如果输入非数字值,则int将失败。所以:

if(cin>>x)
如果输入字母而不是数字,

将返回false。

由于您总是输入数字,因此您的第一个语句if(cin>>sum)始终为真。因此,您的其他陈述将被跳过。