Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Constant is long ?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
28.10.2004, 13:08 Uhr
~Gast
Gast


Hallo,

ich bekomme bei meinem Programm immer die Fehlermeldung: constant is long.

Habe z.B.


C++:
unsigned long P = 0;

while (P <= 0 || P > 1000000)
  {
    scanf("%ld",&P);
  }



Woran liegt das und wie mache ich es richtig?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.10.2004, 13:12 Uhr
Devil



Du prüfst einen unsigned Datentypen ob er kleiner gleich 0 ist ???
--
Intelligenz ist eine Illusion des Menschen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.10.2004, 13:15 Uhr
~Gast
Gast


Die Warnung kommt auch wenn ich long int nehme.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
28.10.2004, 13:26 Uhr
Tommix



Hallo,
hast Du womöglich einen 16bit-Compiler? Probier mal

C++:
while (P <= 0 || P > 1000000L)



- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
28.10.2004, 13:31 Uhr
~Gast
Gast



Zitat von Tommix:
Hallo,
hast Du womöglich einen 16bit-Compiler? Probier mal

C++:
while (P <= 0 || P > 1000000L)



- Tommix


Danke so funktioniert es.
Wieso muss noch ein L hinter den Wert?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
28.10.2004, 13:38 Uhr
Tommix



L wie Long.
Die Konstante ist (sonst) standarmäßig int. Der Compiler kann aber 1000000 nicht in 16 bit unterbringen.

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
28.10.2004, 13:42 Uhr
~Gast
Gast



Zitat von Tommix:
L wie Long.
Die Konstante ist (sonst) standarmäßig int. Der Compiler kann aber 1000000 nicht in 16 bit unterbringen.

- Tommix


Alles klar. Danke.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
28.10.2004, 13:42 Uhr
virtual
Sexiest Bit alive
(Operator)


Damit es eine long - constant wird. Ohne L ists ne einfache int - Constante. Im falle eines 16 Bittigen systems kann ein int aber nur werte zwischen -32678 und +32767 aufnehmen.
Wenn du eine Zahl verwenden willst, die Größer als der Wertebreich von int ist, mußt du:
1. Im Fall von unsigned ein "U"
2. Im Fall von long ein "L"
3. Im Fall von long long "LL"
dranhängen. U und L können auch gemischt werden:

C++:
unsigned long big_u32 = 4000000000UL;


(Ginge ohne U oder L nicht ohne Warnung)
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
28.10.2004, 13:51 Uhr
~Gast
Gast



Zitat von virtual:
Damit es eine long - constant wird. Ohne L ists ne einfache int - Constante. Im falle eines 16 Bittigen systems kann ein int aber nur werte zwischen -32678 und +32767 aufnehmen.
Wenn du eine Zahl verwenden willst, die Größer als der Wertebreich von int ist, mußt du:
1. Im Fall von unsigned ein "U"
2. Im Fall von long ein "L"
3. Im Fall von long long "LL"
dranhängen. U und L können auch gemischt werden:

C++:
unsigned long big_u32 = 4000000000UL;


(Ginge ohne U oder L nicht ohne Warnung)



Super Beschreibung! Danke.

Angenommen ich steige später auf einen 32 Bit Compiler um, erkennt dieser dann noch die U, L und LL's oder müßte ich sie dann wieder entfernen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
28.10.2004, 14:00 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat von ~Gast:
[quote virtual]Damit es eine long - constant wird. Ohne L ists ne einfache int -
Angenommen ich steige später auf einen 32 Bit Compiler um, erkennt dieser dann noch die U, L und LL's oder müßte ich sie dann wieder entfernen?

Nein.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: