0

コードの使用

    sscanf(argv[1], "%d", &num1);
    sscanf(argv[2], "%c", &op);
    sscanf(argv[3], "%d", &num2);

        if ((op != '-')||(op != '*')||(op != '/')||(op != '+'))
    {
        puts("Error:");
        printf("'%c' is not a valid operator", op);
        return 0;
    }

正常にコンパイルされます。

ただし、どの入力に対しても機能しません。たとえば、入力が 4 + 7 の場合

コンソール プリント:

エラー:

「+」は有効な演算子ではありません

編集: このエラー チェック コードがなければ、op! に基づく switch ステートメントを含め、プログラムの残りの部分は正しく動作します。

4

3 に答える 3

4

あなたの条件は常に真であるため、理にかなっています。

 (op != '-')||(op != '*')||(op != '/')||(op != '+')

あるいは

 (op != '-')||(op != '*')

は常に に評価されtrueます。

あなたは基本的に「そうopでない場合、- または opそうでない場合*...何でもする」と言っています。

おそらく&&代わりに使用するつもりでした。

于 2012-12-10T12:25:26.003 に答える
3

論理的な問題があります。OR (||) 演算子を AND (&&) に変更する必要があります。

于 2012-12-10T12:27:42.757 に答える
2

あなたがしたい

   if ((op != '-')&&(op != '*')&&(op != '/')&&(op != '+'))
于 2012-12-10T12:26:29.143 に答える