退货还是运营商?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了退货还是运营商?相关的知识,希望对你有一定的参考价值。
我刚看到类似的东西:
return (m(s1 + 1, s2) || m(s1 + 1, s2 + 1));
||
在return
声明中的含义是什么?在这里,m
是一个功能; s1
和s2
是字符串。
答案
线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;
}
另一答案
在||
语句中使用return
运算符没有什么特别之处。声明如下:
return <expression>;
相当于:
temp = <expression>;
return temp;
(其中temp
与函数的返回类型具有相同的类型)。
所以你的陈述相当于:
int temp = (m(s1 + 1, s2) || m(s1 + 1, s2 + 1));
return temp;
另一答案
||
是一个短路,或者意味着表达式将作为结果停止在第一个真值处执行。它具有与此代码相同的效果,但如果你知道||
的含义,它会更短更容易阅读:
if (m(s1 + 1, s2)) {
return 1;
}
if(m(s1 + 1, s2 + 1)) {
return 1;
}
return 0;
如果m
在屏幕上打印某些内容,则只有在第一次调用返回真值时才打印一次。你也有&&
做类似的事情但停在第一个假值。 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;
使用运算符的明显原因是您需要更少的样板。
以上是关于退货还是运营商?的主要内容,如果未能解决你的问题,请参考以下文章