簡體   English   中英

比較C ++中的字符

[英]comparing characters in c++

如果我運行程序,則不會將在“ Bitte Funktion waehlen”之后輸入的值與sincostan 相反,它總是直接跳轉到else語句。

#include <iostream>
#include <string>

using namespace::std;

int funktions_wahl(char funktion, int genauigkeit)
{
    char sin;
    char cos;
    char tan;
    int x;
    if (funktion==sin) {
        cout << "sin von " << x << " =" << 2*x*genauigkeit; //Wie sin als fkt hier benutzen? 2x vorübergehend.
    }
    else if (funktion==cos) {
        cout << "cos von " << x << " =" << 4*x*genauigkeit; //Gleiches Spiel wie oben.
    }
    else if (funktion==tan) {
        cout << "tan von " << x << " =" << 8*x*genauigkeit; //Gleiches Spiel wie oben;
    }
    else {
        cout << "Keine gültige Variable eingegeben\r";
    }
    return 0;
}


int main() {
    char f;
    int g=0;
    cout << "Taschenrechner 1.0\r" << "Bitte Funktion eingeben: ";
    cin >> f;
    cout << "Genauigkeit wählen: ";
    cin >> g;
    funktions_wahl(f, g);
}

我不明白為什么。 有人對我有建議嗎?

char sin;
char cos;
char tan;
int x;
if (funktion==sin) {
    cout << "sin von " << x << " =" << 2*x*genauigkeit;

您忘記初始化sincostanx ,因此正在讀取未初始化的內存。

您可能打算使用char sin = 's'; 等等。

問題是您沒有初始化變量sincostan (實際上應該是常量),這導致未定義的行為:

  • 對於調試版本,編譯器實際上可能會逐步執行您的程序,從而比較未初始化的隨機數。
  • 對於優化的構建,編譯器可能會優化未初始化的局部變量之間的這些比較,並且僅實現錯誤情況( cout << "Keine gültige Variable eingegeben\\r"; )。

若要更正此問題,您應該改為按以下方式定義和初始化這些常量:

const char sin = 's';
const char cos = 'c';
const char tan = 't';

更新

要回答更新的問題(如何使用“ sin”而不是“ s”),您只需要將變量的類型從char更改為string ,並將文字從char文字(單引號之間)更改為字符串文字(在雙引號之間),如下所示:

string f;
...
const string sin = "sin";
const string cos = "cos";
const string tan = "tan";

感謝您的回答。

我按照您的建議進行了更改。 但是,仍然有可能輸入eG sin而不是s嗎?

    #include <iostream>
    #include <string>

    using namespace::std;



int funktions_wahl(char funktion, int genauigkeit, int x)
 {
char sin='s';
char cos='c';
char tan='t';
if (funktion==sin) {
    cout << "sin von " << x << " =" << 2*x*genauigkeit << "\r"; //Wie sin als fkt hier benutzen? 2x vorübergehend.
}
else if (funktion==cos) {
    cout << "cos von " << x << " =" << 4*x*genauigkeit << "\r"; //Gleiches Spiel wie oben.
}
else if (funktion==tan) {
    cout << "tan von " << x << " =" << 8*x*genauigkeit << "\r"; //Gleiches Spiel wie oben;
}
else {
    cout << "Keine gültige Variable eingegeben\r";
}
return 0;
}





int main() {
char f;
int g=0;
int x=0;
cout << "Taschenrechner 1.0\r" << "Bitte Funktion eingeben: ";
cin >> f;
cout << "Genauigkeit wählen: ";
cin >> g;
cout << "x wählen: ";
cin >> x;
funktions_wahl(f, g, x);

暫無
暫無

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

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