按字符控制变量

Controlling variable by character

本文关键字:控制变量 字符      更新时间:2023-10-16

我正在用c++制作计算器,我有一个问题。有办法做这样的事吗?

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

我需要使用字符"+-*/"来控制"y",它会给我一些错误,比如"error:从'const-char*'到'int'的无效转换[-fpermission]|"我不知道是什么意思

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

  1. 比较运算符为===用于分配或初始化
  2. "+"是字符串文字,也称为char[2];由于空字节,2。一个字符是'+'。注意,C++中的字符文字是char s,而在C中是int s
  3. 使用else if或更好的switch控制结构。CCD_ 11为编译器留下了更多的优化空间,比如跳表或散列映射
  4. y的这个数字赋值看起来不太好。请改用enum

通常,您希望使用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;
if( x == '+' )    {y = 1}
if( x == '-' )    {y = 2}
if( x == '*' )    {y = 3}
if( x == '/' )    {y = 4}

x=对变量x表示某种的值

x==something means如果x包含相同的something值,则返回true,否则返回false。

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

另一种方法是使用交换机

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