我刚刚看到了类似的东西:
return (m(s1 + 1, s2) || m(s1 + 1, s2 + 1));
||
在return
语句中是什么意思?
m
是一个函数; s1
和s2
是字符串。
答案 0 :(得分:9)
在||
语句中使用return
运算符没有什么特别之处。这样的语句:
return <expression>;
等效于:
temp = <expression>;
return temp;
(其中temp
的类型与函数的返回类型相同)。
所以您的陈述等同于:
int temp = (m(s1 + 1, s2) || m(s1 + 1, s2 + 1));
return temp;
答案 1 :(得分:5)
return (m(s1 + 1, s2) || m(s1 + 1, s2 + 1));
行可以用以下格式重写:
if ( m(s1 + 1, s2) )
{
/* if left part not null, return 1, without
evaluationg the right part */
return 1;
}
else if ( m(s1 + 1, s2 + 1) )
{
/* if left was 0, test right part */
return 1;
}
else
{
/* if both are null, return 0*/
return 0;
}
答案 2 :(得分:1)
||
是短路或,表示表达式将在结果为第一个真值时停止执行。
它与该代码具有相同的效果,但是如果您知道||
的含义,则它更短,更容易阅读:
if (m(s1 + 1, s2)) {
return 1;
}
if(m(s1 + 1, s2 + 1)) {
return 1;
}
return 0;
如果m
在屏幕上打印了一些内容,则仅在第一个调用返回真值时才打印一次。您还可以使用&&
进行类似的操作,但会以第一个false值停止。 return (m(s1 + 1, s2) && m(s1 + 1, s2 + 1));
与:
if (!m(s1 + 1, s2)) {
return 0;
}
if (!m(s1 + 1, s2 + 1)) {
return 0;
}
return 1;
使用运算符的明显原因是您需要更少的样板。