이진 연산자(
op)의 경우 양식의 복합 할당식
x op=y의 식은 아래의 식과 동일
x = x op y
bool test = true;
test &= false; //output : False (test = test & false;
test |= true; // output : True ( test = test | false;
test ^= fasle; // ^ = XOR, output : True ( test = test ^ false;
^x^y 의 경우에 서로 다른 진리값을 가질 경우 (ex) x = true , y = false || x = false, y = true ) True를 반환한다.
-> 즉 피연산자 bool의 같지 않음 bool != 자와 동일 결과
&& 와 & 의 차이 , || 와 | 의 차이는
lhs 즉 왼쪽 피연산자의 값이 이후 연산 수행에 영향을 미치는 가의 차이이다.
&&
-> x 및 y가 모두 true로 평가되면 x && y의 결과는 true입니다. 그렇지 않으면 결과는 false입니다. x가 false이면 y는 계산되지 않습니다.
&
-> x 및 y가 모두 true로 평가되면 x && y의 결과는 true입니다. 그렇지 않으면 결과는 false입니다. 왼쪽 피연산자가 false로 평가되더라도 & 연산자는 두 피연산자를 평가하여 오른쪽 피연산자의 값에 관계없이 false이어야 합니다.
아래 예시를 보면 lhs 값에 관계없이 SecondOperand()가 수행되는 것을 확인 할 수 있다.
bool SecondOperand()
{
Console.WriteLine("Second operand is evaluated.");
return true;
}
bool a = false & SecondOperand();
Console.WriteLine(a);
// Output:
// Second operand is evaluated.
// False
bool b = true & SecondOperand();
Console.WriteLine(b);
// Output:
// Second operand is evaluated.
// True
|| vs |||
->x 또는 y가 true로 평가되면 x || y의 결과는 true입니다. 그렇지 않으면 결과는 false입니다. x가 true이면 y는 계산되지 않습니다.
|
-> x 또는 y가 true로 평가되면 x | y의 결과는 true입니다. 그렇지 않으면 결과는 false입니다.
왼쪽 피연산자가 true로 평가되더라도 | 연산자는 두 피연산자를 평가하여 오른쪽 피연산자의 값에 관계없이 true이어야 합니다.
예시는 위의 & 경우와 동일하여 생략