파이썬에서 배열은 a[-1]의 -1 인덱스가 Mod개념으로 a의 마지막 인덱스 위치를 나타내는데, c언어에서도 동일한 성질을 갖나요?
문제7번에서 str[4]가 저는 str[0]과 같은 인덱스를 의미하는 줄 알았는데 str[]의 인덱스는 범위 내에서만 지정이 되는 것이 겠군요.
안녕하세요 길벗수험서 운영팀입니다.
mod 개념으로 접근할 수 있는 것은 파이썬에서도 range나 slice와 같은 개념에서만 가능합니다.
직접적으로 배열의 범위를 넘어서는 a[-1] 같은 것을 조회하려고 하면 언더플로나 오버플로 같은 오류가 발생하죠.
위 사항은 C, Java 어떤 언어에서든 마찬가지로 적용됩니다.
(실제로 해당 문제의 코드는 오류가 발생하는 코드입니다.)
행복한 하루되세요 :)
-
관리자2023-11-04 06:12:50
안녕하세요 길벗수험서 운영팀입니다.
mod 개념으로 접근할 수 있는 것은 파이썬에서도 range나 slice와 같은 개념에서만 가능합니다.
직접적으로 배열의 범위를 넘어서는 a[-1] 같은 것을 조회하려고 하면 언더플로나 오버플로 같은 오류가 발생하죠.
위 사항은 C, Java 어떤 언어에서든 마찬가지로 적용됩니다.
(실제로 해당 문제의 코드는 오류가 발생하는 코드입니다.)
행복한 하루되세요 :)
-
관리자2023-11-13 12:18:43
안녕하세요 길벗수험서 운영팀입니다.
파이썬에서
a = [1, 2, 3]
print(a[3])
은 out of range 오류가 발생하지만
a = [1, 2, 3]
print(a[-1])
은 3을 출력합니다.
다만 위의 -1 위치 조회는 컴파일러에서 잘못된 위치를 자동으로 조정해주는 것일 뿐 올바른 위치 조회 방법은 아니므로 지양하는 것이 좋습니다.
사실상 처음 질문하셨던 mod 값을 이용한 slice나 range를 이용하는 문제 또한 파이썬의 컴파일러가 얼마나 유연하게 위치를 조정해주느냐를 알아보기 위한 것일 뿐 실제 코딩 시 이러한 것은 불가피한 상황이 아닌 이상 예외 처리 등을 이용하여 올바른 위치를 지정해주는 것이 버그를 발생시키지 않는 안전한 코딩이 됩니다.
행복한 하루되세요 :)
-
*2023-11-11 01:07:45
Python에서 배열과 리스트 모두 -1은 마지막 인수와 같은 값을 제공해주는데 혹시 제가 알고있는 사실과 다른점이 있나요?