C#:
static void Main(string[] args)
{
bool result = true;
result &= Func();
result &= Func();
result &= Func();
Console.WriteLine("&= 最后结果:{0}\n", result);
Console.ReadKey();
result = result && Func();
result = result && Func();
result = result && Func();
Console.WriteLine("result && 最后结果:{0}\n", result);
Console.ReadKey();
result = result & Func();
result = result & Func();
result = result & Func();
Console.WriteLine("result & 最后结果:{0}\n", result);
Console.ReadKey();
}
static bool Func()
{
int a = 1;
int b = 2;
int c = a + b;
bool result = c != 3;
Console.WriteLine("Func 函数 Result = {0}", result);
return result;
}
输出:
Func 函数 Result = False
Func 函数 Result = False
Func 函数 Result = False
&= 最后结果:False
Func 函数 Result = False
result && 最后结果:False
Func 函数 Result = False
Func 函数 Result = False
Func 函数 Result = False
result & 最后结果:False
result = result && Func();
这个有短路效果。
C++:
#include <cstdlib>
#include <iostream>
bool Func()
{
using namespace std;
int a = 1;
int b = 2;
int c = a + b;
bool result = c != 3;
cout << "Func 的结果是:" << result << endl;
return result;
}
int main()
{
using namespace std;
int result = true;
result &= Func();
result &= Func();
result &= Func();
cout << "&= 的结果是:" << result << endl << endl;
result = true;
result = result && Func(); // 这个有短路效果
result = result && Func();
result = result && Func();
cout << "result && 的结果是:" << result << endl << endl;
result = true;
result = result & Func(); // 等效 &=
result = result & Func();
result = result & Func();
cout << "result & 的结果是:" << result << endl;
return 0;
}
输出:
unc 的结果是:0
Func 的结果是:0
Func 的结果是:0
&= 的结果是:0
Func 的结果是:0
result && 的结果是:0
Func 的结果是:0
Func 的结果是:0
Func 的结果是:0
result & 的结果是:0
result = result && Func();
有短路效果。