6

コードの次の行にいくつかあります:long long maxCPUTime = 4294967296;

(long型の最大数は4294967296 -1なので、long longを使用しました)

問題は、コンパイルすると次のエラーが発生することです。

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

まるで、eclipsは私が「longlong」と書いたことを認識せず、「longlong」と書いたと思います。

(私はLinux OSを使用しています)

なぜ私がこのエラーを受け取るのか誰かが知っていますか?

4

2 に答える 2

6

それに追加LL

long long maxCPUTime = 4294967296LL;

それで問題は解決するはずです。(区別しやすいため、よりもLL優先されます。)ll

long longC99 / C ++ 11まで、正式に標準に追加されませんでした。

通常、整数リテラルはそれを保持するための最小タイプを持ちます。しかし、C99 / C ++ 11より前long longは、標準には「存在」していませんでした。(ただし、ほとんどのコンパイラは拡張機能としてそれを持っていました)したがって、(一部のコンパイラでは)型longを取得しないよりも大きい整数リテラルlong long

于 2012-01-26T08:46:59.857 に答える
5

問題は、定数 (4294967296) が and に適合せずint(unsigned int実際には適合しないlong- コンパイラが言っていることです)、自動的に に昇格されないlong longため、エラーが発生することです。それを作るには、接尾辞を追加する必要がありますLL(またはll、後者は私のような近視眼的な人々によって混乱されるかもしれませんが11long long

long long maxCPUTime = 4294967296LL;
于 2012-01-26T08:49:17.337 に答える