2012-12-07 3 views
2

나는이 클래스를 foo 메소드와 주 변수로 가지고 있는데, 여기에는 몇 개의 변수와 print 문이있다. || (또는) 문을 입력으로 사용합니까?

public static boolean foo(int x, boolean b) { 
    if (x < 0) { 
      return true; 
    } 
    return !b; 
} 

내가 다음 인쇄 말 :

foo (-3, c || !c) 

내가 무엇을 이해하는 데 문제 || 할 예정이다. main에서 boolean c = false를 선언했지만, c (false) 또는! c (true)를 입력하는 방법을 알지 못합니다. 또한, 부차적 인 질문 : 불리언 변수 앞에 감탄 부호는 반대 권리를 줄 것인가? 입력이 거짓이고 foo가! b를 반환하면 true를 반환합니다.

+1

선택하지 않습니다. || 논리 연산자입니다. 사실 || 적어도 하나가 사실이기 때문에 false는 true로 평가됩니다. –

답변

3

항상 동성 연설을 말하며 항상 사실입니다.

c || !c은 "c 또는c"가 아닙니다. 이 중 하나는 항상 사실입니다.

1

나는 (false)를 입력 c 또는!의 C (참)

그것은 두 가지 가능성 "입력 선택"아니에요 선택할 수있는 방법을 볼 수 없습니다. 값이이고,c || !c 인 단일 결과가 인 결과입니다.

참고 : 은 x의 부울 값에 대해 항상 true으로 평가됩니다.

+0

잠자리에 들지만 함수를 사용하면 평가 순서와 부작용을 확장 할 수 있습니다. –

1

c || !c 항상 true 될 것이다 - 당신은뿐만 아니라

foo (-3, true) 
1

으로 코드를 대체 할 수있는 당신이 c을 선언하는 경우 :

boolean c = false;// or true 

다음 c || !c 항상 true에 발생합니다.

그래서 메서드 호출 foo (-3, c || !c)foo (-3, true)

1

에 해당하지만 아무것도 "||"입니다 OR을 의미하므로 x || ! x는 x를 false 또는 true로 선언하든 상관없이 항상 true를 반환합니다.

관련 문제