dlwlstn0508   2년 전

단계별로 풀어보기 문자열부분을 해결하다가 맞닥드린 문제인데요..

이 코드를 출력하면 

2 3

4 5 6

이렇게 나오는데 

num1[4], num2[4]로 바꿀 시에는 출력이 정상적으로 잘 됩니다.

예측 해봤을 때 scanf에서 %s로 받을때 NULL문자가 문제인 것 같습니다.

근데 왜 맨 처음 입력받은 1이 출력이 안되는지 전혀 감이 안잡힙니다...

버퍼에서 어떤 일이 일어나는 걸까요????

도움 주시면 정말 감사할 것 같습니다!!!

djm03178   2년 전

배열의 길이를 벗어나는 접근은 undefined behavior이기 때문에 무슨 일이 일어나도 이상하지 않습니다. 안에서 무슨 상황이 진행되는지는 컴파일러의 최적화 등에 의해 달라지기 때문에 의문을 가지는 것 자체에 크게 의미가 없습니다. 주변의 다른 변수값을 건드린다거나 해서 프로그램의 실행 흐름 자체가 완전히 뒤바뀌는 것도 가능합니다.

dlwlstn0508   2년 전

아하 그렇군요 감사합니다!

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