본문 바로가기
error 일기

long 과 int 값을 같다고 생각한 에러

by 정구지개발자 2023. 6. 21.
728x90

mac os 32bit에서는 long과 int가 4바이트로 같지만

mac os 64bit에서는 long이 8바이트로 long long과 같아진다.

따라서 내가 공부하는 OS는 mac os 64bit라 long과 int를 같다고 생각하면 안되는데 같다고 생각했다. 

위의 코드를 보면 philo->last_eat_time은 long값을 리턴하고 이 리턴값을 result 변수에 값을 넣는다.

이 때 result는 int 값이다 그래서 philo->last_eat_time이 값은 long 값이면 mac os 64bit에서는 long long과 같다 

따라서 philo->last_eat_time의 값이 int범위를 넘어경우 - 값이 된다. 

이렇게 될경우 내가 원하는 값인 + 값이 안나오고 - 값이 나와 에러가 나오게 된다. 

 

위의 코드로 바꿔주면 간단히 해결되는 문제였다. 이런 문제일지 모르고 계속 다른쪽에서 문제점을 찾고 있어서 시간낭비를 많이 했다. 아주 기초적이면서 단순한것 하나 떄문이였다. 그만큼 내가 이런 기초적인것도 흔들릴수 있다는것에 충격을 받았다. 다시는 이런 실수 안하도록 반성을 많이 해야겠다.

 

문제점)

1. long의 개념 부실

2. 꼼꼼히 생각하지않고 코드를 작성함

 

개선)

1. 기본적인 데이터 범위관련해서 개념 다시 확실히 해두기

2. 코드를 짤떄 데이터범위도 생각하면서 꼼꼼히 짜기!

728x90

댓글