qgqg264   5년 전

안녕하세요 숨바꼭질 문제 풀다가 질문이 생겼습니다.

계속 런타임 에러에서 헤매다가 에라모르겠다 싶어서 조건문에서  &&의 위치를 바꿨는데 런타임 에러가 해결이 되더라구요.

제가 알기론..? && 조건문 비교할 때에는 앞의 조건문에 false이면 바로 종료시키고 뒤에를 비교하지 않는다고 배웠는데

이 경우에는 앞의 조건문 또한 참인 경우여서 순서룰 바꾼다고 런타임에러가 해결 될 일이 없다고 생각했는데 해결되서(?) 당황스럽네요

정말 초보적인 질문이지만 혹시 왜 조건문 순서를 바꾼 것이 런타임 에러를 해결하게 된 이유 알려주시면 감사하겠습니다!

djm03178   5년 전

now == 0인 경우 check[now - 1]이라는 메모리 위치에 접근 자체를 하면 안 되기 때문입니다.

check[now - 1] == false라는 조건을 검사하려면 check[-1]이라는 위치의 값을 읽어와야 하는데, 이건 배열의 범위를 벗어난 인덱스이기 때문입니다. 이런 연산의 결과는 참/거짓을 따지기 이전에 컴퓨터에게 허용 자체가 안 될 수 있고, 그러면 그 즉시 런타임 에러가 됩니다.

qgqg264   5년 전

아 완전 명쾌히 이해했어요!! 감사합니다 ㅠㅠ

댓글을 작성하려면 로그인해야 합니다.