[CS] 단락 평가

2026. 4. 12. 16:27·CS

단락 평가 (Short-Circuit Evaluation)


단락 평가는 논리 연산에서 전체 결과가 이미 결정된 경우, 나머지 조건을 평가하지 않는 방식입니다.
주로 &&(AND), ||(OR) 연산에서 사용되며, 불필요한 연산을 줄이고 안전한 코드 실행을 보장하는 역할을 합니다.

단락 평가 동작


AND 연산 (&&)

첫 번째 조건이 false이면 전체 결과는 false이므로, 뒤의 조건은 평가하지 않습니다.

A && B
→ A가 false이면 B는 실행되지 않음

OR 연산 (||)

첫 번째 조건이 true이면 전체 결과는 true이므로, 뒤의 조건은 평가하지 않습니다.

A || B
→ A가 true이면 B는 실행되지 않음

단락 평가 예시


int[] arr = new int[5];
int j = 10;

if (j < 5 && arr[j] == 1) {
// 실행되지 않음 (안전)
}

위 코드에서는 j < 5가 false이므로 arr[j]는 평가되지 않습니다.
따라서 배열 범위를 벗어나더라도 예외가 발생하지 않습니다.

반면,

if (arr[j] == 1 && j < 5) {
// 예외 발생 가능
}

이 경우 arr[j]가 먼저 실행되기 때문에 IndexOutOfBoundsException이 발생할 수 있습니다.

단락 평가 활용


  1. 배열 범위 체크
  2. if (i < arr.length && arr[i] == target)
  3. null 체크
  4. if (obj != null && obj.method())
  5. 비용이 큰 연산 제어
  6. if (isValid() && expensiveOperation())

결론


조건식은 왼쪽부터 평가되며, 결과가 결정되면 이후 조건은 실행되지 않습니다.
따라서 조건문의 순서는 단순한 코드 스타일이 아니라 안정성과 성능에 직접적인 영향을 줍니다.

'CS' 카테고리의 다른 글

@PathVariable vs @RequestParam  (0) 2025.05.17
[Spring boot] Gradle Toolchains (3/3)  (0) 2025.05.06
[Spring boot] Gradle Toolchains (2/3)  (0) 2025.05.05
[Spring boot] Gradle Toolchains (1/3)  (0) 2025.05.04
[CS] HTTP 상태 코드  (0) 2025.03.14
'CS' 카테고리의 다른 글
  • @PathVariable vs @RequestParam
  • [Spring boot] Gradle Toolchains (3/3)
  • [Spring boot] Gradle Toolchains (2/3)
  • [Spring boot] Gradle Toolchains (1/3)
tkxx_ls
tkxx_ls
  • tkxx_ls
    tkxx_ls Story
    tkxx_ls
  • 전체
    오늘
    어제
    • 분류 전체보기 (119) N
      • 코딩테스트 (58) N
        • 백준 (40)
        • 프로그래머스 (18) N
      • 42Seoul (6)
        • libft (6)
      • Github (1)
      • 환경설정 (1)
        • 기타 (4)
        • c & c++ (3)
      • 잡설 (2)
      • CS (7)
        • 네트워크 (2)
        • 강화 학습 (4)
        • 자료구조 (8)
        • 알고리즘 (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    BOJ
    자료구조
    Gradle 설정
    구현
    java 버전 호환성
    Java
    강화학습
    백준
    cs
    java tool chain
    jdk 버전 관리
    프로그래머스
    백트래킹
    브루트포스
    알고리즘
    문자열 처리
    완전탐색
    gradle
    gradle java 설정
    dfs
    신경망
    인공지능
    Baekjoon
    build 재현성
    분할정복
    c++
    java build
    머신러닝
    programmers
    gradle tool chain
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
tkxx_ls
[CS] 단락 평가
상단으로

티스토리툴바