2012-01-26 9 views
6

私のコードに次の行があります。 long long maxCPUTime = 4294967296;cpp:eclipseは 'long long'型を認識しません

(ロングタイプが可能な最大数は4294967296 -1であるので、私は長い間、長い使用)

問題は、私は、コンパイル時に、私は次のエラーを取得、次のとおりです。として

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

そのをもし私が 'long long'と書いたことをeclipsが認識しないなら、私は 'long'と書いていると思う。

(私はLinuxのOSを使用しています)私はこのエラーを取得する理由

誰もが知っていますか?それに

+1

ない日食に精通し、しかし:あなたは(後者は11のために私のような近視眼人によって混同されることもあるかll)それlong long作るために接尾辞LLを追加する必要があります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

'' long long'を望んでいる間、 '' unsigned long long'を '' ull''していませんか? –

+0

ただ気づいた。それを指してくれてありがとう。 – Mysticial

+1

ヒント:小文字の「l」ではなく大文字の「L」を使用してください。どちらもコンパイルできますが、人間にとっては、 'L'は(ほとんどのフォントで) '1'と区別することが容易です。 – Johnsyweb

5

問題はあなたの定数(4294967296)がintunsigned intに適合しない(実際にはそれは同様longに収まらない - それはコンパイラが言っていることだ)ということですので、エラー、および自動的long longに昇格されていません。それは私だった場合、私は」

long long maxCPUTime = 4294967296LL; 
関連する問題