2011-11-23 3 views
4

나는C# : 짧은 방법으로 v1을 작성합니다! ? V2! V2

bool v1, v2; 
// ... 

편집을 쓸 수 : 나는 혼란에 매우 죄송합니다. 올바른 문장은 다음과 같아야합니다

bool v3 = !v1 ? v2 : !v2; 

ORIGINAL 내가

bool v3 = v1 ? v2 : !v2; 

도 짧은

을 요청? 또는 : 동일한 결과를 얻을 연산자가 있습니까?

그래서 그는 초기 질문에 대답했기 때문에 Anders Abels가 올바른 대답으로 표시했습니다. 나는 그의 대답을 뒤집을 필요가있다.

+0

전체 조건을 제공 할 수 있습니까? – sll

답변

2

당신은 피연산자의 true 경우 하나 하나가 true 인 줄 것이다 xor합니다 (^ 연산자)를 사용할 수 있습니다. 그것은 당신이 원하는 것을 반대를 반환합니다, 그래서 당신은 모든 것을 부정해야 :

!(v1^v2); 
+5

* xor *가 * not equal *과 동일하다는 것은 흥미 롭다고 생각합니다. 그래서 표현식은'v1 == v2'와 같습니다. – svick

11

내가 v1==v2이 그것을해야한다고 생각합니다.

편집

: 앤더스가 말했듯이 업데이트 된 질문에 대한

, 그것은 v1!=v2, 또는 v1^v2을합니다.

+0

간단하고 우아한. 나는 내 경우를 안심 :-) –

+0

나는'v1! = v2'가 가장 우아한 해결책이라고 생각한다. –

4

블라드는 이미 정답을 제공했습니다. 이러한 문제를 어떻게 해결할 수 있는지 보여주는 데 도움이되는 간단한 표를 추가하기 만하면됩니다.

  | v2 = true | v2 = false | 
-----------+------------+------------+ 
v1 = true | false | true | 
-----------+------------+------------+ 
v1 = false | true | false | 
-----------+------------+------------+ 

편집 : 테이블이 업데이트 된 질문과 일치하도록 업데이트되었습니다.

블라드가 이미 미터법으로 표현 했으므로 표현식은 !=으로 리팩터링 될 수 있습니다. Parantheses는 설명을 위해 추가되었습니다. 그들은 컴파일러에 의해 필요하지 않습니다.

bool v3 = (v1 != v2); 
+0

내 실수. 나는 정확한 질문을 쓰지 않았다 ... 그의 대답은 지금 표시되었다. 테이블을 가져 주셔서 감사합니다. – SACO