내 C++ 프로그램은 런타임 중에 10^16까지 값을 생성 할 수 있습니다. "long long int"를 사용하려고했지만 작동하지 않았습니다. 10^16에 해당하는 데이터 유형은 무엇입니까?어떤 데이터 유형이 C++에서 10^16에 해당합니까?
감사합니다. ..
내 C++ 프로그램은 런타임 중에 10^16까지 값을 생성 할 수 있습니다. "long long int"를 사용하려고했지만 작동하지 않았습니다. 10^16에 해당하는 데이터 유형은 무엇입니까?어떤 데이터 유형이 C++에서 10^16에 해당합니까?
감사합니다. ..
64 비트 미만이므로 .. 긴 긴 잘해야
조금이라도 확장 할 수 없다면 이것은 아마도 주석이어야합니다. – Mysticial
나는 오랫동안 노력했지만 그것은 문제가 컴파일러에 대한 생각, 당신의 대답을 주셔서 감사합니다. – selentoptas
long long int
의 최저 보증 최대 약 10^19
인 2^63 - 1
이다. 괜찮을거야. 확인하려면 <cstdint>
의 std::int_least64_t
유형을 사용하십시오. 최소한 64 비트가 보장됩니다.
시도 int64_t
. 그것은 충분히 길어야합니다. 그러나 문자 그대로의 정수를 입력해야합니다 : 당신이 1E16
을 말한다면
int64_t n = 10000000000000000;
, 즉 리터럴 double
, 그리고 정수로 변환 예기치 않은 결과가 발생할 수 있습니다.
10000000000000000LL <- 일부 컴파일러의 경우 접미사가 필요할 수 있습니다. – s3rius
@ s3rius : 그렇게해서는 안됩니다. 정수 리터럴에 맞는 유형이 있습니다 ... –
gcc를 C99 이전 모드로 실행하지 않는 한 기본적으로 (또는 단순히 C89/90 컴파일러 인 경우) 컴파일러가 ' C99에서 일반적인 긴 long 상수가 C89에서 지원되는 가장 긴 정수 유형 (long (또는 unsigned long))이었습니다. 놀람. –
부호없는 long long Int는 최대 10^18까지 작동합니다!
스택 오버플로에 오신 것을 환영합니다! 질문은 [도움말]에 정의 된 스택 오버플로에 대한 주제가 아닙니다. 그런 질문에 대답하지 마십시오. 대신주의를 기울여 플래그를 지정해야하며 닫히거나 적절히 마이그레이션됩니다. –
"작동하지 않았습니다"보다 구체적으로 기재 할 수 있습니까? –
6 분 동안 내 프로그램에서 응답이 없습니다. 프로그램을 마쳤을 때 오버플로 오류가 발생했습니다. – selentoptas
@Selen 정수 오버플로보다 스택 오버 플로우와 비슷하게 들린다. '10^16' 값이 문제라고 생각하게 만드는 이유는 무엇입니까? –