2016-09-19 2 views
0

내가 i_am의 다른 가능성을 테스트하여 이해하기 위해 가능한 모든 방법을 시도 테스트 한만약 삼항 연산자와 조건과보다 큼 (>) 기호

bool i_am = true; 
int he_is= 0; 
if ((!i_am? false : he_is> 0)) 
    Console.WriteLine("Condition is true....."); 

다음 코드 조각 혼란 스러워요 he_is하지만 여전히 논리를 찾을 수는 없습니다.

중괄호 "()"중 하나를 제거하려고 시도하면 다른 출력이 생성됩니다. 중괄호도 혼란스럽게 작동합니다!

저는 C#의 초보자입니다. 아무도이 조건문의 코드 흐름을 도와 줄 수 있습니까? 사전 감사합니다.

+4

정확히 무엇을 이해하지 않습니다

!i_am ? false : he_is > 0 

는 입력 같다? 'if'는'bool'을 필요로합니다. 조건 연산자'?'는 하나를 반환합니다. 테스트가 양수이면 물음표 뒤에 첫 번째 것이고 그렇지 않으면':'뒤에있는 것이됩니다. 'he_is> 0'은'false'를 반환합니다. 둘 다 거짓이므로'if'는'Console.WriteLine'을 실행하지 않습니다. –

+3

'i_am && he_is> 0' – juharr

+0

와 동일합니다. @juharr 당신은 방금 그것을 찍었습니다! 짧고 달다! 정말 고마워요! –

답변

1

우리는 조각하여 조각을 분석 할 경우

if (!i_am) //The ! operator means "NOT", so its like saying if(i_am = false), while the default if(i_am) would be equal to if(i_am = true) 
{ 
    return false; 
} 
else 
{ 
    return he_is > 0; //he_is = 0, so 0 > 0 will return false. 
} 
3

조건은 이상한 형태로 표현되어 있지만, 나는 같다 생각하는 경우 : 당신을 혼란 어떤 부분이 아주 확실하지 않다

if (i_am && he_is > 0) 
-1

, 그래서 조금 생각하는거야 비트.

"??" 조작을 Null 통합 연산자라고합니다. 피연산자가 null이 아니면 왼쪽 피연산자를 반환합니다. 그렇지 않으면 오른손 피연산자를 반환합니다.

아무 것도 정리하지 않습니까?

+1

그건 사실이 아니야. Null Coalescing 연산자는'?? '입니다. – fknx

+0

죄송합니다 - 다른 것을 추가하셨습니까? - 나는 그것이 그가 가고 있던 운영자라고 생각했다. – confusedandamused

+1

그는 코드에서 [? : Operator] (https://msdn.microsoft.com/de-de/library/ty67wk28.aspx?f=255&MSPPError=-2147217396)를 사용하고 있습니다. – fknx