比较c ++中的字符

时间:2015-11-01 10:47:40

标签: c++ char

如果我运行我的程序,它不会将“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);
}

我不明白为什么。有人对我有建议吗?

3 个答案:

答案 0 :(得分:3)

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

您忘记初始化sincostanx,因此正在阅读未初始化的内存。

你可能想要像char sin = 's';这样的东西。

答案 1 :(得分:1)

问题是你没有初始化变量'h;s/[^[:alpha:]]//g;H;x;s/\n/&&/;ta;:a;s/\n(.)\n(.)/\n\2\1\n/;ta;G;/\n(.)\n\n\1$/I;d' $1sincos(实际应该是常量),这会导致未定义的行为:

  • 对于调试版本,编译器可能确实逐步执行您的程序,从而比较未初始化的随机数;
  • 对于优化构建,编译器可能会优化未初始化的局部变量之间的这些比较,并且只实现错误情况(tan)。

要纠正此问题,您应该按如下方式定义和初始化这些常量:

cout << "Keine gültige Variable eingegeben\r";

<强>更新

要回答您更新的问题(如何使用“罪”而不是“s”),您只需将变量类型从const char sin = 's'; const char cos = 'c'; const char tan = 't'; 更改为char,然后更改文字char literals(在简单引号之间)到字符串文字(在双引号之间),如下例所示:

string

答案 2 :(得分:0)

感谢您的回答。

我按照你的建议改变了它。但仍然不可能进入e.G罪而不是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);