【发布时间】:2020-01-08 08:21:12
【问题描述】:
我有一个关于计算器的简单示例:
输入第一个操作数,然后输入运算符,如果运算符是一元,则无需输入第二个。所以打印结果,例如:如果一个数字不需要第二个操作数,则为正方形。
输入可以从命令提示符传递到程序中,否则在程序从输入流启动后。
我想将输入作为参数传递给程序的原因是有时我想从命令提示符调用我的程序,所以我可以发出:
calc 57 + 12+ enter: I get 69。-
该程序运行良好,但是当涉及到平方运算符时,在我的例子中我使用了
^它可以从输入流 (std::cin) 但如果我通过命令提示符传递它我不能?!int main(int argc, char* argv[]){ int a = 0; int b = 0; char op = '\0'; if(argc < 2){ std::cout << "a: "; std::cin >> a; std::cout << "op: "; std::cin >> op; switch(op){ case '^': std::cout << a << " ^2 " << " = " << a * a << std::endl; break; case '+': std::cout << "b: "; std::cin >> b; std::cout << a << " + " << b << " = " << a + b << std::endl; break; case '-': std::cout << "b: "; std::cin >> b; std::cout << a << " - " << b << " = " << a - b << std::endl; break; case '*': std::cout << "b: "; std::cin >> b; std::cout << a << " * " << b << " = " << a * b << std::endl; break; case '/': std::cout << "b: "; std::cin >> b; std::cout << a << " / " << b << " = " << a / b << std::endl; break; case '%': std::cout << "b: "; std::cin >> b; std::cout << a << " % " << b << " = " << a % b << std::endl; break; } } else{ a = atoi(argv[1]); op = argv[2][0]; } if(argc == 3){ std::cout << "argc = 3" << std::endl; std::cout << "op: " << op << std::endl; switch(op){ case '^': std::cout << a << " ^2 " << " = " << a * a << std::endl; break; } } else if(argc == 4){ b = atoi(argv[3]); switch(op){ case '+': std::cout << a << " + " << b << " = " << a + b << std::endl; break; case '-': std::cout << a << " - " << b << " = " << a - b << std::endl; break; case '*': std::cout << a << " * " << b << " = " << a * b << std::endl; break; case '/': std::cout << a << " / " << b << " = " << a / b << std::endl; break; case '%': std::cout << a << " % " << b << " = " << a % b << std::endl; break; } } std::cin.get() return 0; } 如果我从命令提示符发出:
calc 7 ^我没有得到49,但命令询问我more ?。
【问题讨论】:
-
您是否尝试使用调试器单步执行您的代码?