【问题标题】:A program with passing arguments, Why this program has wrong answer?一个传递参数的程序,为什么这个程序有错误的答案?
【发布时间】:2018-09-08 19:48:10
【问题描述】:

我学到了一些关于如何将参数传递给程序的知识。 我的作业是当我们通过传递程序参数来加、减、乘、除 2 时找到结果。 我的代码在这里(我使用 Visual Studio 2017)

#include "stdafx.h"
#include <stdlib.h>
int main(int argc, char*argv[])
{
    if (argc != 4) {
        printf("Wrong argument !");
    }
    else {
        int a = atoi(argv[1]);
        int b = atoi(argv[3]);
        if (argv[2][0] == '+') {
            printf("%d + %d = %d\n", a, b, a + b);
            return 0;
        }
        if (argv[2][0] == '-') {
            printf("%d - %d = %d\n", a, b, a - b);
            return 0;
        }
        if (argv[2][0] == '*') {
            printf("%d * %d = %d\n", a, b, a * b);
            return 0;
        }
        if (argv[2][0] == '/') {
            printf("%d / %d = %f\n", a, b, (float) a/ b);
            return 0;
        }
        printf("No available operator!\n");
    }
    return 0;
}

当我传递参数 2 + 3 时,结果是 5。 当我传递错误的运算符时,例如 2 ^ 3。答案是“错误的参数!”。 我已经调试了几次程序,他们打印了“No available operator!”,但它总是回到第一行并且无法结束程序。 你能给我解释一下这种情况吗?

【问题讨论】:

  • 当想要的操作是'除'时,一定要检查变量'b'不为0

标签: c++ c visual-studio arguments parameter-passing


【解决方案1】:

我相信CMD.exe^ 视为在命令行中具有特殊含义的转义字符,因此我认为该字符甚至不会出现在您的程序中。

我会尝试通过:

myprogram.exe 2 ^^ 3

转义转义字符。

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-07
  • 1970-01-01
  • 2019-06-27
  • 1970-01-01
相关资源
最近更新 更多