我用c ++制作计算器,我有一个问题。有没有办法像这样做?
if( x = "+" ) {y = 1}
if( x = "-" ) {y = 2}
if( x = "*" ) {y = 3}
if( x = "/" ) {y = 4}
我需要控制" y"通过使用字符" + - * /"它给了我错误,例如"错误:来自' const char *'的无效转换到' int' [-fpermissive] |"我不知道这意味着什么
我是初学者。感谢您的帮助:))
答案 0 :(得分:4)
==
。 =
用于分配或初始化。"+"
是字符串文字a.k.a. char[2]
; 2
因为空字节。角色是'+'
。请注意,在C char
s中,C ++中的字符文字是int
。else if
甚至更好的switch
控件结构。 switch
为编译器提供了更多的优化空间,如跳转表或哈希映射。y
的此数字分配看起来不太好。请改用enum
。答案 1 :(得分:0)
通常,您希望使用switch
语句,这是一般订单:
switch (x) {
case '+': y = 1; break;
case '-': y = 2; break;
case '*': y = 3; break;
case '/': y = 4; break;
}
如果您有更多可能性(或者可能需要从外部数据文件中加载可能性等),您可能需要考虑使用std::map
或std::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...
}