2012-01-26 2 views
6

다음 코드는 내 코드에 있습니다. long long maxCPUTime = 4294967296;cpp : eclipse는 'long long'타입을 인식하지 못합니다.

(될 수있는 가장 큰 수 긴 유형 4294967296 -1, 그래서 내가 오래 오래 사용) 내가 컴파일 할 때 문제가, 내가 다음 오류 얻을 수있다

:

error: integer constant is too large for ‘long’ type 

그것의 등을 if, eclips는 내가 'long long'을 썼다는 것을 인정하지 않고 'long'이라고 쓴다고 생각합니다.

나는이 오류가 왜

사람이 알고있다 (I 리눅스 OS를 사용하고 있습니다)? 그것에

+1

익숙하지 않은,하지만이 날이라면, 내가 ' d 타입에 대해'int64_t' 또는'uint64_t'를 시도하십시오. –

+1

@ Mr Lister : 변수의 유형은 여기에서 문제가되지 않습니다. – vitaut

+0

@ kakush 답변 중 하나를 수락하지 않겠습니까? – sashoalm

답변

6

추가] LL : 문제를 해결해야

long long maxCPUTime = 4294967296LL; 

. (LL은 구분하기가 쉽기 때문에 ll보다 좋습니다.)

long long은 C99/C++ 11까지 공식적으로 표준에 추가되지 않았습니다.

일반적으로 정수 리터럴에는이를 유지하기위한 최소 유형이 있습니다. 그러나 C99/C++ 11 이전에는 long long이 표준에 "존재하지"않았습니다. (그러나 대부분의 컴파일러는 확장 기능을 가지고 있습니다.) 그래서 (일부 컴파일러에서는) long보다 큰 정수 리터럴은 long long 타입을 갖지 않습니다. 오류 따라서, 자동 long long으로 승격되지 -

+1

''long long'을 원할 때''unsigned long long'을 의미하지 않습니까? –

+0

방금 ​​알아 챘습니다. 그것을 가리켜 주셔서 감사합니다. – Mysticial

+1

팁 : 소문자 "l"보다는 대문자 "L"을 사용하십시오. 둘 다 컴파일되지만 인간의 경우'L '은 (대부분의 글꼴에서)'1 '과 구별하기가 더 쉽습니다. – Johnsyweb

5

문제는 상수 (4294967296)이 (즉, 컴파일러가 무슨 말을의 그것뿐만 아니라 long에 맞지 않는 사실) intunsigned int에 맞지 않는다는 것입니다 . 그것을 long long을 만들기 위해 (후자가 11을 위해 나 같은 근시안적인 사람들이 혼동 될 수 있지만 나 ll) 당신은 접미사 LL을 추가해야합니다 : 일식과

long long maxCPUTime = 4294967296LL; 
관련 문제