Gå til innhold

Feilmelding pga "integer constant is too large"


Gjest Slettet+142

Anbefalte innlegg

Gjest Slettet+142

hey

 

holder på å lese en bok (Programmering i C++, TISIP). har komt til kapittel 10, altså OOP.

 

har skrevet inn 2 ferdige koder fra boken, men når eg prøver å gjøre en oppgave som går ut på å utvide klassen med å legge til finnKontonr() og settKontonr() og private kontonr; , får eg feilmelding

 

28 C:\Documents and Settings\marius\Skrivebord\cpp\programliste\klasse\konto_t.cpp integer constant is too large for "long" type

 

konto.cpp:

 

Skjult tekst: (Marker innholdet i feltet for å se teksten):

 


//
// konto.cpp
// Min første klasse @ Page 311
// programliste 10-1 og 10-2
//

class Konto {
     
     public:
            void   settSaldo(double nySaldo);
            void settGrense(double nyGrense);
            void settKontonr(unsigned long int kontonr);
            
            double finnSaldo() const;
            double finnGrense() const;
            double finnDisponibelt() const;
            unsigned long int finnKontonr() const;
            
            void innskudd(double beleop);
            bool uttakOK(double beleop);
            
     private:
             double grense;
             double saldo;
             unsigned long int kontonr;
};


// ------------------------------------------------------------------

void Konto::settSaldo(double nySaldo){
    saldo = nySaldo;
}

// ------------------------------------------------------------------

void Konto::settGrense(double nyGrense){
    grense = nyGrense;
}

// ------------------------------------------------------------------

void Konto::settKontonr(unsigned long int kontonr){
    kontonr = kontonr;
}

// ------------------------------------------------------------------

double Konto::finnSaldo() const{
      return saldo;
}

// ------------------------------------------------------------------

double Konto::finnGrense() const{
      return grense;
}

// ------------------------------------------------------------------

double Konto::finnDisponibelt() const{
      return grense + saldo;
}

// ------------------------------------------------------------------

unsigned long int Konto::finnKontonr() const{
   return kontonr;
}

// ------------------------------------------------------------------

void Konto::innskudd(double beleop){
    saldo+=beleop;
}

// ------------------------------------------------------------------

bool Konto::uttakOK(double beleop){
    if(saldo+grense < beleop){
                    return false;
    }else{
          saldo-=beleop;
          return true;
    }
}

// ------------------------------------------------------------------

 

 

 

konto_t.cpp:

 

Skjult tekst: (Marker innholdet i feltet for å se teksten):

 


//
// test av funksjon konto.cpp
//

#include <string>
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <cmath>
#include <ctime>
#include <iomanip>
#include <cctype>
#include <sstream>
#include <time.h>
#include <windows.h>

#include "konto.cpp"

using namespace std;

int main(){
   
   Konto konto1;
   konto1.settSaldo(1000.0);
   konto1.settGrense(5000);
   konto1.innskudd(4000.0);
   konto1.uttakOK(200.0);
   konto1.settKontonr(36245564177);
   cout << "Saldoen er " << konto1.finnSaldo() << endl;
   cout << "Kredittgrensen er " << konto1.finnGrense() << endl;
   cout << "Disponibelt beleop er " << konto1.finnDisponibelt() << endl;
   cout << "Ditt kontonr. er " << konto1.finnKontonr() << endl;
   if(!konto1.uttakOK(10000.0)) cout << "!! For stort uttak !!" << endl;

   cout << endl;
   system("pause");
   return 0;
}


 

 

noen som ser hva det er som skaper feilmelding?

Endret av Slettet+142
Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet+142
Konstanten du skrev inn på linje 28 er for stor for datatypen du spesifiserte.

 

Prøv å lage en long long eller en unsigned type som unsigned long. De fleste kompilatorer bruker også en ymse postfiks på store konstanter.

 

Eks.

long long myBigInt = 36245564177LL;

7093061[/snapback]

det virket! :D

 

tusen takk for hjelp :thumbup:

Endret av Slettet+142
Lenke til kommentar

Ønsker å kommentere et par ting. Når man poster kode i forum gjør man gjerne mest mulig for å isolere hvor problemet oppstår slik at de som skal hjelpe ikke må parse en masse ikke-relevant informasjon.

 

I ditt tilfelle noe slikt:

 


#include <iostream>

using namespace std;


void accountNumber(unsigned long int account_number)
{
 cout << "account_number: " << account_number << endl;
}


int main(int argc, char* argv[], char* env[])
{
 accountNumber(36245564177); // blah.cpp:14
 return 0;
}

 

lars@ibmr52:~/programming/c$ g++ -Wall -g blah.cpp -o blah && ./blah
blah.cpp:14: error: integer constant is too large for ‘long’ type

 

(legg merke til at jeg tar med linjenummer som kommentar også)

 

..ok, vel..

 

Stol på kompileren, forstå engelsk og det den forsøker å fortelle deg. Den "tuller ikke" eller "babbler" slik som andre feilmeldinger ofte gjør i Windows.

 

meldingen: "integer constant is too large for "long" type"

 

konto1.settKontonr(36245564177); <== "integer constant"

 

void settKontonr(unsigned long int kontonr); <== "long type"

 

kjetil7 har allerede postet løsningen:

 

#include <iostream>

using namespace std;


void accountNumber(unsigned long long account_number)
{
 cout << "account_number: " << account_number << endl;
}


int main(int argc, char* argv[], char* env[])
{
 accountNumber(36245564177LL);
 return 0;
}

 

lars@ibmr52:~/programming/c$ g++ -Wall -g blah.cpp -o blah && ./blah
account_number: 36245564177

 

edit:

Dette er litt av grunnen til at det er lurt å kunne engelsk og bruke engelske bøker når man driver med programmering. (hva er "integer"? .. hva er "constant"?)

 

edit2:

Nevne også at det som regel kun er den første eller de to første meldingene fra kompileren man bør konsentrere seg om; resten er ofte følgefeil.

Endret av lnostdal
Lenke til kommentar
Gjest Slettet+142

weee :w00t: tusen takk for hjelp begge to... :)

 

og.. det som du nevnte lnostdal; skal tenke _mye_ mer på det neste gang. er ikke så vant til å poste bl.a her i C++-kategorien :blush:

 

takk for at du nevnte/kommenterte det ;)

Endret av Slettet+142
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...