IT박스

간단한 부울에 대한 if / else if / else가 "도달 할 수없는 코드"오류를 제공하지 않는 이유

itboxs 2020. 12. 13. 09:05
반응형

간단한 부울에 대한 if / else if / else가 "도달 할 수없는 코드"오류를 제공하지 않는 이유


이 코드가 "연결할 수없는 코드"오류를 표시하지 않는 이유는 무엇입니까? 부울은 참 또는 거짓 일 수 있기 때문입니다.

public static void main(String args[]) {
    boolean a = false;
    if (a == true) {

    } else if (a == false) {

    } else {
        int c = 0;
        c = c + 1;
    }
}

에서 JLS 14.21. 도달 할 수없는 진술

문에 연결할 수 없어서 실행할 수없는 경우 컴파일 타임 오류입니다.

if-then-else 문에 도달 할 수있는 경우 else- 문에 도달 할 수 있습니다.

if-then-else 문에 연결할 수 있습니다. 따라서 정의에 따라 컴파일러는 else 문에 도달 할 수 있다고 생각합니다.

참고 : 흥미롭게도 다음 코드도 컴파일됩니다.

// This is ok
if (false) { /* do something */ }

이것은 사실이 아닙니다. while

// This will not compile
while (false) { /* do something */ }

에 대한 도달 가능성 정의 while가 다르기 때문에 (강조) :

while 문에 도달 할 수 있고 조건식이 값이 false 인 상수 표현식이 아닌 경우 포함 된 명령문에 도달 할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/36086502/why-is-an-if-else-if-else-for-a-simple-boolean-not-giving-an-unreachable-code

반응형