前几天我错过了我的课堂讲座,我想知道是否有人可以解释短路是什么,也许是一个简单的Java程序中使用它的例子.谢谢你的帮助!
我在C#中有一个方法,SendEvent
它返回一个bool
表示它是否成功的方法.我想循环遍历许多对象并调用SendEvent
它们,最后,有一个结果变量是a bool
,即true
如果所有SendEvent
调用都成功,并且false
至少有一个失败.
起初我这样做了:
bool result = true;
for (int i = 0; i < myObjects.Length; i++)
{
result = result && myObjects[i].SendEvent();
}
Run Code Online (Sandbox Code Playgroud)
但是SendEvent
如果一个失败,那将导致后续对象不会被调用,因为&&
如果结果是,则不会执行操作符的右侧false
.
所以我把它转过来:
bool result = true;
for (int i = 0; i < myObjects.Length; i++)
{
result = myObjects[i].SendEvent() && result;
}
Run Code Online (Sandbox Code Playgroud)
但我觉得有点难看.我可以使用按位运算&=
符来始终执行SendEvent
调用,并设置结果的值,像这样?
bool result = true;
for (int i = 0; i < …
Run Code Online (Sandbox Code Playgroud) C &
和&&
C 之间有什么区别?
我的老师给了我这个例子:
int a = 8;
int b = 4;
printf("a & b = %d\n", a & b);
printf("a && b = %d\n", a && b);
Run Code Online (Sandbox Code Playgroud)
输出:
a & b = 0;
a && b = 1;
Run Code Online (Sandbox Code Playgroud)
我不确定为什么这会在一个场景中返回true而在另一个场景中返回false.