0

使用する

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 警告: 割り当てにより、キャストなしでポインタから整数が作成されます [デフォルトで有効]

4

3 に答える 3

3

argv[1] は char へのポインタです。これを char に割り当てることはできません。operator を char * に変換するか、operator = *(argv[1]); を試してください。

于 2012-12-10T11:21:37.397 に答える
2
operator =argv[1];        // line 29

ここでargv[1]は、タイプchar*です。しかしoperator、タイプcharです。それがエラーの理由です。

コマンドラインから渡す単一文字の演算子のみを取得する場合は、次のようにします。

operator=argv[1][0];

しましょう。

関数はエラーを検出しないためstrto*、変換に使用する方がよいことに注意してください。ato*

于 2012-12-10T11:21:05.143 に答える
2

変数operatorはタイプですcharが、タイプargv[1]は ですchar *

1 つは単一の文字で、もう 1 つは文字へのポインタ (つまり、文字列) です。

PS。純粋な C のみを使用する場合に機能する場合でも、C++operatorへの移植が難しくなるため、C++ キーワード ( など) の使用は控えてください。

于 2012-12-10T11:21:11.023 に答える