爲什麼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