kce0206   5년 전

방금 삼성 역량테스트 보고왔는데

하반기엔 2017쓰더니 이번엔 또 2013을 쓰더라구요.

상관있는진 모르겠지만 컴파일하니 테케 10개 다

맞게 나와서 제출했는데 서버에서

아웃풋 확인하니 값이 다 다르게 나오더라규요.

제가 구조체를 전역변수로 두개 쓴게 있는데 그거때문인가

싶어서 그걸 배열로 수정하고

불안해서 memset으로 시뮬 돌리기 직전마다

초기화도 해줬는데 역시나 제 비주얼에선 테케 열개 다 나오지만 서버에선 10개중에 9개만 맞게 나와요.

도대체 왜일까요...?매번 시험장에서 테케 다 나오게 풀어도

매번 생각지도 못한 곳에서 오류가 나니 그냥

코딩을 앞으로 접고 싶습니다. 하.....

djm03178   5년 전

대표적인 원인으로는 지역변수를 초기화하지 않았다거나, 또는 배열의 범위를 넘어서 접근한 경우 등이 있습니다. 또는 증감 연산자를 잘못 사용해서 컴파일러마다 동작이 달라지는 경우도 종종 보입니다.

lovinix   5년 전

undefined behavior에 대해 찾아보세요

kce0206   5년 전

집와서 코드 다시 짜보니 제가 범위를 벗어나는 곳을 참조하는 부분이 있더라구요..ㅋㅋ

역시 컴퓨터는 잘못이 없네요ㅋㅋ그런거 다 잡아주는줄 알았는뎅ㅠ

그런데 쓰레기 값이 -1일 확률이 많나요??쓰레기값이 -1이 아니면 또 답이 나오는 코드라서 

애매하네요ㅋㅋㅋ

lovinix   5년 전

그건.. 그럴 수도 있고 아닐 수도 있다라고밖에 할 말이 없습니다.

어느 컴파일러를 썼는지, 어떤 환경에서 실행했는지, 그 당시에 메모리에 뭐가 있었는지에 따라도 달라질 수 있기 때문에

undefined behavior가 되는 것입니다.

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