이진 연산자(
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이어야 합니다.
예시는 위의 & 경우와 동일하여 생략