这个设置有什么问题?

0 c++ parameters

我创建了一个名为test的程序:

#include<stdlib.h>
#include<iostream>
int main()
{
    std::cout<<system("..\\add\\debug\\add.exe 4 8");
    while(true);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

add.exe由

#include<stdlib.h>
int main(int argc,char **argv[])
{
    int n=((unsigned)argv[1]);
    int m=((unsigned)argv[2]);
    return(n+m);
}
Run Code Online (Sandbox Code Playgroud)

所以当我进行测试时,我得到了

6841420

尝试是使用参数4和8进行测试运行添加,并且要添加以返回这些值的总和(12),然后测试将显示到屏幕.我是如何获得6841420的,我该如何解决?

Jar*_*Par 8

问题是您正在将指针值转换为整数.参数将作为C样式字符串(const char*)传递给您的程序.您需要首先使用像atoi这样的API将它们转换为字符串.

#include<stdlib.h>
int main(int argc,char *argv[])
{
    int n= atoi(argv[1]);
    int m= atoi(argv[2]);
    return(n+m);
}
Run Code Online (Sandbox Code Playgroud)

编辑

正如其他人指出的那样,您还应该进行一些错误检查,以确保实际上有2个参数传递给程序.