int main(int argc, char *argv[])
{
double number1, number2;
char operator;
number1 =atof (argv[0]);
operator =argv[1]; // line 29
number2 =atof (argv[2]);
編譯器抱怨說
29警告:賦值時將指針整數,未作鑄 [默認啓用]
int main(int argc, char *argv[])
{
double number1, number2;
char operator;
number1 =atof (argv[0]);
operator =argv[1]; // line 29
number2 =atof (argv[2]);
編譯器抱怨說
29警告:賦值時將指針整數,未作鑄 [默認啓用]
argv [1]是一個指向char的指針,你不能將它指定給char。要麼將運算符轉換爲char *,要麼嘗試運算符= *(argv [1]);
operator =argv[1]; // line 29
這裏,argv[1]
是鍵入char*
。但是operator
是char
。這是錯誤的原因。
如果你想只有你從此傳遞命令行中,單個字符操作:
operator=argv[1][0];
會做。
請注意,最好使用strto*
進行轉換,因爲ato*
函數不檢測錯誤。
爲什麼會operator = argv [1] [0];工作? – Stumbler
@Duncan這是'argv [1]'中的第一個字符。例如,如果您在命令行中將'+'作爲'argv [1]''傳入'',那麼它就是''+「'。所以當你做'argv [1] [0]'時,它是'argv [1]'中的第一個字符,在這裏是'+'。 –
變量operator
的類型爲char
,而argv[1]
的類型爲char *
。
一個是單個字符,另一個是指向字符的指針(即字符串)。
PS。即使它僅在使用純C時才起作用,您應該避免使用C++關鍵字(如operator
),因爲這會使它難以移植到C++。
由於沒有人說過:'argv [0]'通常是可執行文件的名稱[可能是其他的東西,你可以調用'exec'家族的成員傳遞任何'argv [0]']你想從'argv [1]'開始的命令行參數。 –