按字符控制变量

时间:2015-12-23 21:34:15

标签: c++

我用c ++制作计算器,我有一个问题。有没有办法像这样做?

if( x = "+" )    {y = 1}
if( x = "-" )    {y = 2}
if( x = "*" )    {y = 3}
if( x = "/" )    {y = 4}

我需要控制" y"通过使用字符" + - * /"它给了我错误,例如"错误:来自' const char *'的无效转换到' int' [-fpermissive] |"我不知道这意味着什么

我是初学者。感谢您的帮助:))

3 个答案:

答案 0 :(得分:4)

  1. 比较运算符为===用于分配或初始化。
  2. "+"是字符串文字a.k.a. char[2]; 2因为空字节。角色是'+'。请注意,在C char s中,C ++中的字符文字是int
  3. 使用else if甚至更好的switch控件结构。 switch为编译器提供了更多的优化空间,如跳转表或哈希映射。
  4. y的此数字分配看起来不太好。请改用enum

答案 1 :(得分:0)

通常,您希望使用switch语句,这是一般订单:

switch (x) {
    case '+': y = 1; break;
    case '-': y = 2; break;
    case '*': y = 3; break;
    case '/': y = 4; break;
}

如果您有更多可能性(或者可能需要从外部数据文件中加载可能性等),您可能需要考虑使用std::mapstd::unordered_map代替:

std::map<char, int> ops;

ops['+'] = 1;
ops['-'] = 2;
ops['*'] = 3;
ops['/'] = 4;

y = ops.find(x)->second;

答案 2 :(得分:0)

if( x == '+' )    {y = 1}
if( x == '-' )    {y = 2}
if( x == '*' )    {y = 3}
if( x == '/' )    {y = 4}

x =意味着将变量x赋予某事物的价值

x ==某事意味着如果x包含相同的值,则返回true,否则返回false。

对于char变量,请记住使用'而不是'

另一种方法是使用开关

    switch(x){
        case '+':
            y = 1;
            break;
        case '*':
            y = 2;
            break;
etc...
    }