doom233   4년 전

런타임은 안뜨는걸 보아하니 인덱스 문제는 아닌거같은데

어느 반례가 있을까요? 

surung9898   4년 전

반례는 다음과 같습니다.

doom233   4년 전

@surung9898

답변 감사합니다. 근데 제 프로그램에서 해당 반례는 제대로 작동하는걸로 확인이 되는데, 혹시 제 코드로 저런 아웃풋이 나온건가요??

djm03178   4년 전

stack[0][rear[0]] = temp[rear[0]++]; 라는 문장이 어떻게 동작해야할지는 정의되어있지 않습니다. rear[0]가 증가되는 시점이 모든 문장이 끝난 이후인지, 시작 전인지, 중간 어디쯤인지가 정해져있지 않아 환경에 따라서 동작이 달라질 수 있습니다. 이 문장에서 보장되는 것은 오른쪽의 rear[0]가 증가되기 전의 값으로 평가된다는 것 뿐입니다.

djm03178   4년 전

그리고 이 내용과는 별개로, 런타임 에러가 나지 않았다고 해서 인덱스 문제가 아니라고 단정지으면 안 됩니다. 인덱스를 벗어난 접근은 무슨 일이 일어날지 모르는 것이지, 에러가 발생한다고 정해져 있는 것이 아니기 때문입니다.

doom233   4년 전

@djm03178

와우 해당 부분만 고치니까 바로 패스하는군요.. 정말 감사합니다.

간결하게 하고 싶어서 즐겨 사용했는데 조심해야겠습니다. 정말 감사드립니다.

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