簡體   English   中英

C ++程序將'*'讀為'a'

[英]C++ Program reading '*' as 'a'

我正在研究一個簡短的小型計算器程序,該程序需要命令行參數並執行相關操作。 除了乘法之外,一切都很好。

當我在命令行中鍵入“ ./calc 3 * 3”時,程序會吐出一個錯誤,當我“ cout”存儲為運算符的字符時,它會顯示“ a”。 其他所有操作員都可以正常工作。

你們能弄清楚為什么它不接受'*'作為字符嗎?

這是代碼和一些示例輸出:

#include <iostream>
#include <cstdlib>
using namespace std;

const int MINIMUM_ARGUMENTS = 4; //must have at least 4 arguments: execution command, a first number, the operator, and a second number;

double Add(double x, double y);
double Subtract(double x, double y);
double Multiply(double x, double y);
double Divide(double x, double y);

int main(int argc, char* argv[])
{
    if (argc < MINIMUM_ARGUMENTS) //"less than" because counting execution command as first argument
    {
        cout << "\nMust have at least " << MINIMUM_ARGUMENTS << " arguments (including execution command)." << endl;
    }
    else
    {
        double num1 = atof(argv[1]); //stores first argument as double
        char operation = *argv[2]; //stores second argument (operator) as char
        double num2 = atof(argv[3]); //stores third argument - second number
        double result = 0; //will store result of arithmetic    

        cout << '\n';

        switch (operation) //determines which function to call based on the char (operator) argument
        {
        case '+':
            result = Add(num1, num2);
            cout << result << endl;
            break;
        case '-':
            result = Subtract(num1, num2);
            cout << result << endl;
            break;
        case '*':
            result = Multiply(num1, num2);
            cout << result << endl;
            break;
        case '/':
            result = Divide(num1, num2);
            cout << result << endl;
            break;
        default:
            cout << "Error." << endl;           
        }   
    }

    cin.clear();
    cout << "\nPress enter to quit." << endl;
    cin.ignore();

    return 0;
}

double Add(double x, double y)
{
    return x + y;
}

double Subtract(double x, double y)
{
    return x - y;
}

double Multiply(double x, double y)
{
    return x * y;
}

double Divide(double x, double y)
{
    return x / y;
}

樣本輸出:

-bash-4.1$ ./calc 10 - 5

5

Press enter to quit.

-bash-4.1$ ./calc 4 + 9

13

Press enter to quit.

-bash-4.1$ ./calc 10 / 2

5

Press enter to quit.

-bash-4.1$ ./calc 5 * 5

Error.

Press enter to quit.

OS使用*符號(此處為重擊)從當前目錄中選擇所有文件。 所以改變你的標志。

我建議'x'

發送*使用單引號'*'或使用\\*對其進行轉義。

*根本無法使用,因為在命令行上*表示“當前目錄中的所有內容”。

*是用於選擇全部的通配符。 通常用於選擇目錄中的所有文件。

例如 :

delete *.exe :此命令將從文件夾中刪除所有擴展名為“ .exe”的文件。

如果在bash中使用, *將被視為通配符,因此您應考慮使用其他符號來執行所需的操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM