我有4条语句,如果语句1是真的,我只想检查语句2-4,下面是我试图实现的伪代码
if (statement 1) {
if (statement 2 or statement 3 or statement 4){
do something()
}
}我想知道下面的代码是否会做同样的事情
if(s1 && s2 || s3 || s4) {
doSomething();
}或者如果我不得不这样做
if (s1) {
if (s2 || s3 || s4) {
doSomething();
}
}发布于 2019-08-21 13:37:31
发布于 2019-08-21 13:38:35
在C++中,逻辑运算符&&和||是短路的--这意味着运算符的左操作数将首先被计算,如果结果不会受到进一步计算的影响,那么它就会停止。例如,x() && y()只在x()为真时才计算y(),而x() || y()只在x()为false时才计算y()。
作为一项建议,您应该注意在事物周围加上括号,以便更清楚地说明您想要的操作顺序:
s1 && (s2 || s3 || s4)而不是
s1 && s2 || s3 || s4发布于 2019-08-21 13:42:41
您需要在||语句中插入括号。所以:
if(s1 && (s2 || s3 || s4)) { // << note the parenthesis
doSomething();
}相等于
if (s1) {
if (s2 || s3 || s4) {
doSomething();
}
}这是因为短路评估的工作.基本上,如果s1为false,则不会对括号进行计算。你可以读到它,这里。
https://stackoverflow.com/questions/57592907
复制相似问题