为什么argc的输出有差异?为什么argc的输出有差异?
第一:
#include<stdlib.h>
#include<stdio.h>
#include<iostream>
int main(int argc,char *argv[])
{
for(int i=1;i<=argc;i++)
std::cout<<argv[i]<<"\n"<<std::endl;
std::cout<<argc<<std::endl;
return 0;
}
我得到的输出的argv但是我不为她的argc获取输出。
第二种情况:
#include<stdlib.h>
#include<stdio.h>
#include<iostream>
int main(int argc,char *argv[])
{
std::cout<<argc<<std::endl;
for(int i=1;i<=argc;i++)
std::cout<<argv[i]<<"\n"<<std::endl;
return 0;
}
我得到两个的argv和argc个输出。
在这两种情况下,如果我使用“printf”而不是“cout”,我会得到argc的输出。
为什么argc的输出有差异?
'我<= argc'导致未定义的行为。如果'argc'是2,那么有效的'argv'索引是'argv [0]'和'argv [1]'。 'argv [2]'是未定义的行为。 – jww
刚刚发生'std :: cout'机制混淆,因为你在代码中访问'argv [argc]'。如果你在'std :: cout << argc << std :: endl;'之前运行'fprintf(stdout,“%d \ n”,argc);',或许你可以得到'argc'的值它发生在我身上)。无论如何:总是像其他人告诉你的那样,
tzot