long int int 차이점
글쓴이: i2ft / 작성시간: 금, 2013/05/31 - 10:54오전
int 는 컴퓨터의 처리 방식에따라 다른 범위를 지니게됩니다(한번연산할떄 읽어들이는 값의범위)
16비트 컴퓨터 int =16
32비트 컴퓨터 int =32
64비트 컴퓨터 int =32
long 과 int 가 크기가 같은데 존재하는이유 =>
16비트 시절 16비트int로 사용햇던 값들을
32비트 로넘어와 그대로 int로 사용하기위해
typedef int= long int
와같이 가독성작업을위해 필요햇기떄문
(16비트시절 long int ->32비트);
64비트 컴퓨터의 int가 그대로 int인이유 => 아직 많은컴퓨터들이 32비트를 기본처리방식으로 사용하고있기떄문
64비트 컴퓨터가 대중화가된다면 int=64비트로바뀔것
이라고 이해하고있습니다.
틀렷다면 댓글좀
Forums:
http://www.unix.org/version2/
http://www.unix.org/version2/whatsnew/lp64_wp.html
이 문서가 도움이 될지도 모르겠네요.
Int 나 char, double 과 같은 자료형의
Int 나 char, double 과 같은 자료형의 크기는 OS가 아니라, 컴파일러에 따라 변경이 된다고 알고 있었습니다.
찾아 보니 이런게 있네요..
http://stackoverflow.com/questions/589575/size-of-int-long-etc
The C++ standard does not specify the size of integral types in bytes, but it specifies minimum ranges they must be able to hold. You can infer minimum size in bits from the required range and the value of CHAR_BIT macro, that defines the number of bits in a byte (in all but the most obscure platforms it's 8).
One additional constraint for char is that its size is always 1 byte, or CHAR_BIT bits (hence the name).
---------------------------------
제일 왼쪽이 저입니다 :)
하드웨어 OS 컴파일러 모두가 영향을 줍니다.
하드웨어 OS 컴파일러 모두가 영향을 줍니다.
그렇게 될지 어쩔지는 모르겠지만..
위에 답글처럼 하드웨어에, OS, 컴파일러에 따라 다른 문제로 인하여.. 쉬운문제는 아니죠..
만약 i2ft님 말대로 되려면, 64bit 체계의 int는 8byte로 한다. 라는 표준이 있어야할텐데요..
C언어 표준을 보면, 각각의 자료형에 따른 타입이 몇 바이트라고 정해진게 아니라,
short<=int<=long<=double 과 같은식으로 되어 있습니다.
하드웨어, OS, 컴파일러마다 차이가 발생할 가능성이 많기 때문에 그렇지 않나 싶네요.
다른 얘긴데, 같은 64bit라도, 윈도우에선 포인터변수의 크기가 4byte인 반면, osx에서는 8byte로 나온답니다.
...
int 와 같은 primitive type 의 경우 컴파일러 마다 기본 사이즈가 다르기때문입니다. 표준에서는 최소값에 대해서 정의하고 있지 반드시 int 는 32bit 혹은 64bit 라고 정의하지 않은것으로 기억합니다.
그래서 bit 단위가 정말 중요할 경우에는 uint32_t 혹은 int64_t 와 같이 고정된 type 을 사용하는 것이 안전합니다.
http://en.wikipedia.org/wiki/
http://en.wikipedia.org/wiki/64bit
댓글 달기