前几天我错过了我的课堂讲座,我想知道是否有人可以解释短路是什么,也许是一个简单的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.