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

Văn*_*Bùi 3 c c++ arguments parameter-passing visual-studio

我已经学会了如何将参数传递给程序.当我们通过传递程序参数来加,减,乘,除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;
}
Run Code Online (Sandbox Code Playgroud)

当我传递参数2 + 3.结果是5.当我传递一个错误的运算符,例如2 ^ 3.答案是"错误的参数!".我已经调试了几次程序,他们打印了"没有可用的操作员!",但它总是回到第一行并且无法结束程序.你能解释一下这种情况吗?

abe*_*nky 7

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

我会尝试传递:

myprogram.exe 2 ^^ 3
Run Code Online (Sandbox Code Playgroud)

逃避逃脱的角色.

  • 相关:[Windows CMD语法:转义字符,分隔符和引号](https://ss64.com/nt/syntax-esc.html) (3认同)