질문&답변
클라우드/리눅스에 관한 질문과 답변을 주고 받는 곳입니다.
리눅스 분류

_strtoui64와 같은 함수

작성자 정보

  • 안재성 작성
  • 작성일

컨텐츠 정보

본문

안녕하세요 http://jszzang.net 에 안재성입니다.

저도 잘 몰라서 네이버에서 퍼왔습니다. 참고하삼.

======================================================

 

일반적으로 32Bit 프로세서와 OS 환경에서는 int 형과 long 형이 모두 32Bit 이다.

 

그런데, 64Bit 정수형이 필요한 경우가 있다.

 

이럴경우에는 어떻게 할까?

 

double 이 64Bit 이기는 하지만 실수형으로 표시되기 때문에 적당하지가 않다.

 

이럴때는 정수형으로 사용하기 위해서는 long long 형을 사용하면 된다. (왠지 용용 죽겠지가 생각난다. -.-)

 

예를 들면

 

#include <stdio.h>

#include <sdtlib.h>

 

void main(void)

{

    long long iBigInt;

 

    iBigInt= 9445345234222345;

 

   printf("큰 정수형 값 lldBigInt = %lld ", iBigInt);

}

 

위와 같이 long long 형으로 변수를 선언하고 포맷팅 문자열에 %lld 로 사용하면 된다.

 

여기서 C++에서 주로 쓰이는 cout 을 사용하지 않은 이유는 포맷팅 문자열을 어떻게 쓰는지

보여주기 위함이니 C++ 형태의 코드가 아니라고 뭐라하기 없음이다.... ^^;

 

cout << lldBigInt << endl;  일케 하면 자동적으로 변수형에 맞게 출력이 된다는 사실은 모두들

알고 있으리라 생각한다.

 

자.... 요기까지가 유닉스와 리눅스에서 사용하는 컴파일러인 경우에 사용하는 방법이었다.

 

그럼, VC++에서는 64BIT 정수형을 어떻게 지원하는지 살펴보자.

 

VC++에서는 64Bit  정수형 변수를 사용하기 위해서 __int64 형을 사용하면 된다.

 

참고로, VC++에서는 다음과 같은 정수형 변수를 사용할 수 있다.

 

---------------------------------------------------------------

__int8 nSmall;      // Declares 8-bit integer
__int16 nMedium;    // Declares 16-bit integer
__int32 nLarge;     // Declares 32-bit integer
__int64 nHuge;      // Declares 64-bit integer

 

(MSDN에서 발췌)

----------------------------------------------------------------

 

위와 같이 8Bit, 16Bit, 32Bit, 64Bit 를 별도의 타입으로 각각 지정할 수 있는 것이다.

 

자 그럼, 64Bit 를 포맷팅하여 출력할 경우는 어떻게 쓸지 잠시 예제 코드를 보자.

 

#include <stdio.h>

#include <stdlib.h>

 

void main(void)

{

    __int64 iBigInt;

 

    iBigInt = 9445345234222345;

 

    printf("큰정수형 값 iBigInt = %I64d ", iBigInt);

}

 

위와 같이 64Bit 정수형을 포맷팅 하기 위해서는 %I64d 라는 포맷팅 문자열로 변환을 하여 주면 된다.

 

이상으로 유닉스 혹은 리눅스 와 VC++에서 사용하는 64Bit 정수형에 대해서 알아보았다.

 

 

추가사항 : 방금 확인 결과 VS.NET 2005 에서는 유닉스와 마찬가지로 long long 형을 지원한다.

               그러니 위의 예제에 __int64 대신 long long 형을 대신 선언하여 사용하여도 64Bit 변수가 된다.

관련자료

댓글 1

김한호님의 댓글

  • 김한호
  • 작성일
감사합니다. 잘 해결했습니다.
복받으세요~

공지사항


뉴스광장


  • 현재 회원수 :  60,134 명
  • 현재 강좌수 :  36,188 개
  • 현재 접속자 :  354 명