>백엔드 개발 >C++ >C/C에서 큰 정수를 처리하는 데 'long long'이 필수적인 이유는 무엇입니까?

C/C에서 큰 정수를 처리하는 데 'long long'이 필수적인 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-08 09:18:02746검색

Why is  'long long'  essential for handling large integers in C/C  ?

C/C의 'long long' 이해

C/C에서는 숫자 값을 처리하는 데 데이터 유형의 범위가 중요합니다. 'long long' 데이터 유형은 표준 'long' 유형보다 더 큰 정수 값을 수용하기 위해 도입되었으며, 이를 통해 더욱 정확한 작업이 가능해졌습니다.

다음 C/C 코드 조각을 고려하세요.

#include <stdio.h>

int main() {
    int num1 = 1000000000;
    long num2 = 1000000000;
    long long num3;
    long long num4 = ~0;

    printf("%u %u %u", sizeof(num1), sizeof(num2), sizeof(num3));
    printf("%d %ld %lld %llu", num1, num2, num3, num4);
    return 0;
}

이 코드가 실행되면 다음 출력이 인쇄됩니다.

4 4 8
1000000000 1000000000 0 18446744073709551615

출력에서는 몇 가지 흥미로운 동작을 보여줍니다.

  • 'long long'의 크기는 8바이트입니다. 'int'와 'long'의 두 배입니다.
  • 'num1'의 값이 'int' 안에 들어가므로 정확하게 인쇄됩니다.
  • 'num2'는 다음과 같은 값을 갖습니다. 'num1'이지만 'long' 유형을 사용하면 더 큰 숫자를 나타낼 수 있습니다.
  • 'num3'에는 처음에 값이 할당되지 않으므로 0으로 인쇄됩니다.
  • 'num4'에는 0의 비트 역수로, 'long long'에서 가능한 최대 값이 됩니다.

이제 주석 처리된 줄의 주석 처리를 제거해 보겠습니다.

num3 = 100000000000;

오류로 인해 컴파일이 실패합니다. : "오류: 정수 상수가 Long 유형에 비해 너무 큽니다." 이는 리터럴 값 '100000000000'이 'long' 타입으로 표현할 수 있는 최대값을 초과하기 때문입니다. 이 문제를 해결하려면 접미사 LL:

num3 = 100000000000LL;

을 사용하여 이 리터럴이 'long long'임을 지정해야 합니다. 이렇게 수정하면 코드가 성공적으로 컴파일되고 실행됩니다. 이제 출력에는 'num3'에 대한 올바른 값이 포함됩니다.

4 4 8
1000000000 1000000000 100000000000 18446744073709551615

이 코드는 데이터 유형의 중요성과 C/C 프로그래밍에서 큰 정수 값을 처리하기 위한 'long long' 유형의 사용을 보여줍니다.

위 내용은 C/C에서 큰 정수를 처리하는 데 'long long'이 필수적인 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.