2012-01-26 122 views
6

我在我的代碼中有一些地方的下一行: long long maxCPUTime = 4294967296;cpp:eclipse不識別'long long'類型

(數量最多long類型可以是4294967296 -1,所以我用了很長很長)

的問題是,當我編譯,我得到了一個錯誤:

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

它作爲如果eclips不承認我寫了'long long',並且它認爲我寫了'long'。

(我使用的是Linux操作系統)

有誰知道爲什麼我得到這個錯誤?

+1

不熟悉Eclipse,但如果是我,我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類型。

+1

'ull'是不是'無符號long long',而他想要一個'long long'? –

+0

只是注意到了。感謝您指出它。 – Mysticial

+1

作爲提示:使用大寫'L'而不是小寫'l'。兩者都可以編譯,但對於人類來說,'L'與'1'更容易區分(大多數字體)。 – Johnsyweb

5

的問題是,你的常數(4294967296)不適合intunsigned int(實際上它不適合long以及 - 這就是編譯器說),而不是自動提升爲long long,從而錯誤。你必須添加後綴LL(或ll雖然後者可以由短視的人喜歡我11混淆),使其long long

long long maxCPUTime = 4294967296LL;