본문 바로가기
개발/자바

(Java) ShortCut Operation

by kakk789 2022. 3. 29.

ShortCut Operation

위에서 설명 했듯이 비트 곱( & ) 과, 비트 합( | )은 논리 연산자로 사용이 가능하다.
그렇다면 && 과 & 의 차이점은 무엇일까? 결과는 비슷하나 원리가 다름

if ( 조건식 1 && 조건식 2 )
  • &&은 조건식 1이 거짓이라면 조건식 2를 수행하지 않음
  • 그래서 &&, || 를 Shortcut Operation 이라고 함.
만약 if ( 조건식 1 & 조건식 2 ) 일 경우
  • & 가 논리연산자로 사용될 때는 조건식 1이 거짓이라도 일단 조건식 2도 실행함.
  • 즉, 조건식1, 2번 모두 다 실행 해야함.
  • 실행하는게 무슨 의미가 있는거냐면, 만약 조건식에 전위연산, 후위연산이 있을 경우 문제가 될 수도 있음.

아래 예시 코드를 확인해보자

		int a, b, c, d;
		a=b=c=d=5;
		
		if(++c > 100 & ++d > 100) {
			System.out.println("OK"); }
		else {
			System.out.println("NO"); }	
		System.out.println("c: "+c); // 출력 값: 6
		System.out.println("d: "+d); // 출력 값: 6
		
	//---------------------------------------------------------
    
		if (++a > 100 && ++b > 100) {
			
			System.out.println("OK"); }
		else {
			System.out.println("NO"); }
		
		System.out.println("a: "+a); // 출력 값: 6
		System.out.println("b: "+b); // 출력 값: 5

해당 두 코드는 모두 "NO"를 출력한다.

하지만 c, d = 모두 6이 출력 되었지만 a, b는 각각 6, 5가 출력되었다.

  • c는 전위 연산으로 우선 6으로 증가 되었고, 해당 조건식 1번은 거짓이지만 &를 논리연산으로 사용한다면 뒤에 조건식 2번을 무조건 실행하기 때문에 d도 전위 연산 실행되므로 모두 6이된다
  • 하지만 a, b는 다르다. 각각 6, 5 가 출력된다.
    a는 우선 전위 연산 실행하면 6이 되지만 &&논리 연산자의 경우 해당 조건식 1번 자체가 거짓이면 두번째 조건식이 실행되지 않는다. 두번째 조건문이 실행되지 않으니 당연히 b도 전위연산을 할 수가 없으므로 각각 6, 5가 출력 된다
반응형

댓글