一个带参数的程序,为什么会出现错误答案?

3

我了解了如何将参数传递给程序。我的作业是通过传递程序参数来找出两个数字相加、相减、相乘、相除的结果。这是我的代码(我使用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 时,答案是“错误的参数!”。 我已经调试了程序几次,它们打印了“没有可用的运算符!”,但它总是回到第一行,无法结束程序。 你能解释一下这种情况吗?

1
当所需操作为“除法”时,请确保检查变量“b”不为0。 - user3629249
1个回答

7

我认为CMD.exe^视为转义字符,并在命令行上具有特殊含义,因此我认为该字符甚至都没有传递给您的程序。

我建议尝试传递以下内容:

myprogram.exe 2 ^^ 3

转义转义字符。



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接