방금 삼성 역량테스트 보고왔는데
하반기엔 2017쓰더니 이번엔 또 2013을 쓰더라구요.
상관있는진 모르겠지만 컴파일하니 테케 10개 다
맞게 나와서 제출했는데 서버에서
아웃풋 확인하니 값이 다 다르게 나오더라규요.
제가 구조체를 전역변수로 두개 쓴게 있는데 그거때문인가
싶어서 그걸 배열로 수정하고
불안해서 memset으로 시뮬 돌리기 직전마다
초기화도 해줬는데 역시나 제 비주얼에선 테케 열개 다 나오지만 서버에선 10개중에 9개만 맞게 나와요.
도대체 왜일까요...?매번 시험장에서 테케 다 나오게 풀어도
매번 생각지도 못한 곳에서 오류가 나니 그냥
코딩을 앞으로 접고 싶습니다. 하.....
대표적인 원인으로는 지역변수를 초기화하지 않았다거나, 또는 배열의 범위를 넘어서 접근한 경우 등이 있습니다. 또는 증감 연산자를 잘못 사용해서 컴파일러마다 동작이 달라지는 경우도 종종 보입니다.
undefined behavior에 대해 찾아보세요
집와서 코드 다시 짜보니 제가 범위를 벗어나는 곳을 참조하는 부분이 있더라구요..ㅋㅋ
역시 컴퓨터는 잘못이 없네요ㅋㅋ그런거 다 잡아주는줄 알았는뎅ㅠ
그런데 쓰레기 값이 -1일 확률이 많나요??쓰레기값이 -1이 아니면 또 답이 나오는 코드라서
애매하네요ㅋㅋㅋ
그건.. 그럴 수도 있고 아닐 수도 있다라고밖에 할 말이 없습니다.
어느 컴파일러를 썼는지, 어떤 환경에서 실행했는지, 그 당시에 메모리에 뭐가 있었는지에 따라도 달라질 수 있기 때문에
undefined behavior가 되는 것입니다.
댓글을 작성하려면 로그인해야 합니다.
kce0206 5년 전
방금 삼성 역량테스트 보고왔는데
하반기엔 2017쓰더니 이번엔 또 2013을 쓰더라구요.
상관있는진 모르겠지만 컴파일하니 테케 10개 다
맞게 나와서 제출했는데 서버에서
아웃풋 확인하니 값이 다 다르게 나오더라규요.
제가 구조체를 전역변수로 두개 쓴게 있는데 그거때문인가
싶어서 그걸 배열로 수정하고
불안해서 memset으로 시뮬 돌리기 직전마다
초기화도 해줬는데 역시나 제 비주얼에선 테케 열개 다 나오지만 서버에선 10개중에 9개만 맞게 나와요.
도대체 왜일까요...?매번 시험장에서 테케 다 나오게 풀어도
매번 생각지도 못한 곳에서 오류가 나니 그냥
코딩을 앞으로 접고 싶습니다. 하.....