왜 하필 atoi...?

-9,223,372,036,854,775,808과 9,223,372,036,854,775,807기준으로 원본 함수는 값이 변하지 않는 것을 볼 수 있습니다. 도대체 저 수가 의미하는 바는 무엇이고 왜 이런 차이가 발생하는 걸까요?

1. long의 범위가 항상 같지 않다?!

구글에 long 범위를 찾아보자!

Untitled

보통의 경우 long은 signed int와 같은 범위를 가집니다. 왜냐하면 둘 다 4bytes만큼 할당받기 때문이죠.

하지만, 사용하시는 환경에 따라 long에 할당되는 bytes가 달라질 수 있습니다.

1)32-bit

Untitled

2)64-bit 윈도우 환경

Untitled

3) 64-bit 유닉스 환경

Untitled

출처 : https://www.ibm.com/docs/en/ibm-mq/7.5?topic=platforms-standard-data-types

맥은 유닉스 기반이기 때문에 long형으로 선언한 변수는 8bytes를 할당 받게됩니다.

long이 4bytes인 환경에서는 int와 범위가 같지만 우리가 지금 사용하는 맥 환경에서는 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 가 되는 것이죠.