C++ : integer-Konstante zu groß für seinen Typ

Muss ich bruteforce ein Jahr für eine übung. Der compiler halten, werfen diese Fehlermeldung:

bruteforceJS12.cpp:8:28: Warnung: integer-Konstante zu groß für seinen Typ [standardmäßig aktiviert]

Mein code ist:

#include <iostream>

using namespace std;

int main(){

    unsigned long long year(0);
    unsigned long long result(318338237039211050000);
    unsigned long long pass(1337);

    while (pass != result)
    {
    for (unsigned long long i = 1; i<= year; i++)
        {

        pass += year * i * year;

        }

        cout << "pass not cracked with year = " << year << endl;
        ++year;

    }

        cout << "pass cracked with year = " << year << endl;
}

Hinweis, dass ich bereits versucht mit unsigned long long result(318338237039211050000ULL);

Ich bin mit gcc version 4.8.1

EDIT:

Hier ist die korrigierte version mit InfInt Bibliothek http://code.google.com/p/infint/

#include <iostream>
#include "InfInt.h"

using namespace std;

int main(){

    InfInt year = "113";
    InfInt result = "318338237039211050000";
    InfInt pass= "1337";

    while (pass != result)
    {
    for (InfInt i = 1; i<= year; i++)
        {

        pass += year * i * year;

        }

        cout << "year = " << year << "  pass = " << pass <<  endl;
        ++year;

    }

        cout << "pass cracked with year = " << year << endl;
}
  • Sie sollten verwenden Sie die ASCII-Repräsentation.
  • Scheitert es mit unsigned long long result = 318338237039211050000ULL;? Ist es vielleicht einfach, dass Sie es nicht mag, der Initialisierungs-Methode?
  • Wörtliche Suffixe sind nicht für diesen Zweck. Ein integer-literal hat bereits einen Typ, der darstellen kann, wenn eine solche vorhanden ist.
  • ` Warnung: integer-Konstante zu groß für Ihren Typ " ... Es kann nicht gespeichert werden, in einen unsigned long long-Variablen. Es ist alle.
  • Verwenden std::numeric_limits<unsigned long long>::max() um zu sehen, was Ihr problem ist. 318338237039211050000 deutlich größer ist, als 18446744073709551615.
  • int128_t sollte groß genug sein, wenn Sie Zugang zu diesem Typ. 69 erforderlichen bits
  • Zu viele dieser Kommentare Aussehen Antworten - warum nicht post eine Antwort?

InformationsquelleAutor 01BTC10 | 2013-10-31
Schreibe einen Kommentar