为什么 if (a == b || c) && (d != 0) {操作 1} 默认运行,但 (a == e || f ) && (d!= 0) {op2} 被忽略?

why does if (a == b || c) && (d != 0) {operation 1} run by default but (a == e || f ) && (d!= 0) {op2} get ignored?

本文关键字:op2 运行 操作 为什么 if 默认      更新时间:2023-10-16

所以,我正在运行一些代码并让它工作,但我有两个 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;
}

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

为什么会这样?

a == 'e'||'f' 

没有做你认为它正在做的事情。"f"作为布尔值,因为它大于值 0,将始终被视为 true。请尝试以下操作。

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

您那里的两组代码之间的最大区别不是(括号(,而是"=="的使用。