2011-11-28 5 views
2

운영자 ... 비트 단위의 할당 연산자 <code>|=</code>과의 int 및 정수 (Long) 비트 연산자로 <code>&=</code> 작업 같은

int a = 123; 
int b = 234; 
a |= b; 
Console.WriteLine(a); // outputs 251 

그러나 부울에

, 그것은 논리 연산이다 : 어떻게

bool a = true; 
bool b = false; 
a |= b; 
Console.WriteLine(a); // outputs true 

^=, &=|= 연산자는 다른 데이터 유형에 적용될 때 사용할 조작을 결정합니까?

+0

'그러나 bool에서는 논리 연산입니다. '. 네, 그렇습니다. 하지만 bool은 단일 비트이므로 비트 OR은 논리 OR와 같습니다. – Rob

답변

4

컴파일러는 관련된 표현식의 정적 유형을 기반으로 결정합니다.

+1

제네릭의 경우는 어떻게됩니까? 'Foo (T a, T b) {a | = b; }' – PorkWaffles

+2

@PorkWaffles :'T'는'|'연산자를 다루기 위해 보장 된 인터페이스/타입에 제한되지 않기 때문에 컴파일 에러가 발생합니다. ''연산자 '| ='는 'T'및 'T'유형의 피연산자에 적용 할 수 없습니다. " –

+0

아, 이해합니다. 고맙습니다 :) – PorkWaffles