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

标签 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。答案是“错误的论点!”。 我已经调试了几次程序,他们打印“No available operator!”,但它总是回到第一行并且无法结束程序。 你能解释一下这种情况吗?

最佳答案

我相信 CMD.exe^ 视为在命令行中具有特殊含义的转义字符,所以我认为该字符甚至不会它到你的程序。

我会尝试通过:

myprogram.exe 2 ^^ 3

转义转义字符。

关于c++ - 一个带有传递参数的程序,为什么这个程序有错误的答案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49563075/

相关文章:

在 C 中导致缓冲区溢出以强制条件为真

c - 将字符串转换为整数的更好方法

c++ - 在 C++ 中,我们可以使用 { } 进行 C 风格转换吗?

c++ - lambda函数与gsl的数值积分

c++ - 替换 gluPerspective(使用 glFrustrum)

c++ - 在指针声明中放置星号

c - 如何在C中访问二维数组值并将值赋给int

.net - Visual Studio 调试和处置对象

c# - 我如何在 visual c# express 中获取表单

c++ - '字' : 'char [20]' differs in levels of indirection from 'unsigned short'