C++ Switch 语句中的数学运算

C++ Maths in Switch statements

本文关键字:运算 Switch 语句 C++      更新时间:2023-10-16

所以我正在寻找一个简单的数学方程式,它打印一个菜单,然后将运算符作为char。然后,它会提示用户输入两个数字,然后打印生成的问题,然后以以下格式回答:10 + 20 = 30

#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
//Variables
char op_choice;
int usrnum_1;
int usrnum_2;
//Menu
cout << "Operator Menunn";
cout << "+n";
cout << "-n";
cout << "*n";
cout << "/n";
cout << "%nn";
cout << "Choice:";
cin >> op_choice;
cout << "nNumbers:";
cout << "nnEnter TWO numbers to complete an arithmitic operation with the " << op_choice << " operator: n";
cout << "eg: 1 + 2 = 3n";
cout << "nNumber 1: ";
cin >> usrnum_1;
cout << "Number 2: ";
cin >> usrnum_2;
switch (op_choice)
{
case '+':
break;
case '-':
cout << "nYou picked " << usrnum_1 << " - " << usrnum_2 << " = ";
cout << usrnum_1 - usrnum_2;
break;
case '*':
cout << "nYou picked " << usrnum_1 << " X " << usrnum_2 << " = ";
cout << usrnum_1 * usrnum_2;
break;
case '/':
cout << "nYou picked " << usrnum_1 << " / " << usrnum_2 << " = ";
cout << usrnum_1 / usrnum_2;
break;
case '%':
cout << "nYou picked " << usrnum_1 << " % " << usrnum_2 << " = ";
cout << usrnum_1 % usrnum_2;
break;
default:
cout << "nYou made an illegal choice.n";
}
cout << "nYou picked " << usrnum_1 << " " <<  op_choice << " " <<  usrnum_2 << " = ";
cout << usrnum_1 << op_choice << usrnum_2;
getchar();
return 0;
}

我实际上已经让这段代码工作了,正如你从减法和乘法等中看到的那样。但是我希望将cout放在开关块之外(我开始这样做并使用add进行测试(。有没有办法在不op_choice最初将 int 变成 int 的情况下完成这项工作?或者将 cout 语句放入开关块中?使用 if-else-if 语句会更好吗?

首先,switch是此类代码的最佳代码结构。

问题是你的通用输出概念

cout << usrnum_1 << op_choice << usrnum_2;

不能接近您想要执行的计算:

cout << usrnum_1 + usrnum_2;
  1. 我希望当你看到这些线彼此靠近时,第一个问题是清楚的。他们只是做不同的事情:

    1. 第一个打印usrnum_1,然后是op_choice,最后是usrnum_2。没有魔法发生,op_choice只是打印char
    2. 第二个执行加法usrnum_1 + usrnum_2(算术运算符的优先级高于按位移位运算符<<(,然后打印加法的结果。
  2. 第二个更重要的问题是,char op_choice = '+'(在运行时设置(不能轻易成为C++代码中的算术运算符+,因为它是一种编译语言。编译器将表达式a + b转换为整数加法的机器指令。你编译的程序不知道整数加法的指令与数字43(+的ASCII码(有关,直到你明确告诉它(最好使用switch(。

那么如何让它工作呢?正如评论者所建议的那样,您必须将计算保留在switch块中,并且仅将打印部分取出。

int result;
switch (op_choice)
{
case '+':
result = usrnum_1 + usrnum_2;
break;
case '-':
result = usrnum_1 - usrnum_2;
break;
case '*':
result = usrnum_1 * usrnum_2;
break;
case '/':
result = usrnum_1 / usrnum_2;
break;
case '%':
result = usrnum_1 % usrnum_2;
break;
default:
cout << "nYou made an illegal choice.n";
return 1;
}
cout << "nYou picked " << usrnum_1 << " " <<  op_choice << " " <<  usrnum_2 << " = ";
cout << result;

程序的在线演示