85.3 데이터 모델에 대해 질문드립니다.
, 유영석 /학생/수학님이 작성안녕하세요 선생님
https://dojang.io/mod/page/view.php?id=737
85.3 데이터 모델에 대해 질문드립니다.
LP64 모델에서 long과 long long 둘 다 64비트로 동일한데, 그럼 이 때 long이나 long long은 차이가 없는건가요? 완전히 같다고 봐도 되는건가요?
그렇다면 long이나 long long은
과거에 배웠던 typedef로..
가령
typedef data long;
typedef data long long; 과 같은 식으로 되어있는건지 궁금합니다
날이 많이 덥습니다. 건강 유의하셨으면 좋겠습니다!~
읽어주셔서 감사합니다.
Re: 85.3 데이터 모델에 대해 질문드립니다.
, 도장_ 관리자님이 작성LP64에서는 long과 long long이 64비트이므로 둘은 차이가 없습니다.
다만, 플랫폼에 따라 크기가 달라지기 때문에 플랫폼이 달라졌을 때 문제가 없는 코드를 작성하는 게 좋습니다.
long은 IL32P64에서는 32비트가 되고, LP64에서는 64비트가 됩니다. 반면에 long long은 둘 다 64비트입니다. 명확하게 64비트 자료형이 필요하다면 long long을 써야 합니다. 플랫폼이 바뀔 경우 32비트 정수만 담게 되는 버그가 발생할 수 있습니다.
좀더 명확하게 64비트를 명시하고 싶다면 stdint.h를 인클루드하고
int64_t나 uint64_t 타입을 명시적으로 쓰는 것이 더 좋습니다.
Re: 85.3 데이터 모델에 대해 질문드립니다.
, 유영석 /학생/수학님이 작성이식성을 위해 64비트가 필요할 경우엔 long long 또는 *64_t를 쓰도록 하겠습니다
답변주셔서 감사합니다, 건강하세요 선생님 ^^