一个传递参数的程序,为什么这个程序有错误的答案?

时间:2018-03-29 18:45:36

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

我已经学会了如何将参数传递给程序。 当我们通过传递程序参数来加,减,乘,除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.答案是“错误的参数!”。 我已经调试了几次程序,他们打印了“没有可用的操作员!”,但它总是回到第一行并且无法结束程序。 你能解释一下这种情况吗?

1 个答案:

答案 0 :(得分:7)

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

我会尝试传递:

myprogram.exe 2 ^^ 3

逃脱逃脱角色。