如果(a == b || c)&&(d!= 0){operation 1}默认运行,但(a == e || f)&&(d!= 0){op2}为什么默认运行?

时间:2018-07-03 20:24:56

标签: c++

因此,我正在运行一些代码,并且可以运行它,但是我有两个if else语句。

if (( a == 'b'||'c') && (d!=0)) {
    // do operation1;
} else if (( a == 'e'||'f') && (d!=0)) {
    // do operation2; 
}
当我的代码以这种方式构造时,

操作1默认运行。我默认是什么意思?如果我尝试键入输入'e'或'f',它将执行操作1,就像我键入了'b'或'c' 但是后来我尝试了一些不同的方法。

if ((a == 'b') || (a == 'c') && (b != 0)) {
    // do operation 1;
} else if ((a == 'e') || (a == 'f') && (b!= 0)) {
    // do operation 2;
}

请参阅NOW操作1和2正在按预期工作。

为什么会这样?

1 个答案:

答案 0 :(得分:1)

a == 'e'||'f' 

并没有按照您认为的去做。 “ f”作为布尔值,因为它的值大于0,将始终被视为true。请尝试以下操作。

a == 'e' || a == 'f'

您在那两组代码之间的巨大差异不是(方括号),而是'=='的用法。