Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Unverstaendliche Warnung

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 <
000
17.01.2006, 20:16 Uhr
typecast
aka loddab
(Operator)


Hallo,

ich sitz hier gerade vor ner ziemlich komischen Warnung des gccs. Die Zeile


C++:
unsigned magic_number = 3232235522;



bringt den gcc zu folgendem Erguss:


Code:
detection.c:1095: warning: this decimal constant is unsigned only in ISO C90



Die Meldung tritt unabhaengig vom Typ von magic_number auf. Auch ein cast der Konstante auf irgendeinen anderen Typ aendert nix an der Meldung.

Meine Fragen: Was will der Compiler mir damit sagen? Kann das in irgendwelchen obskuren Faellen fuer Probleme sorgen oder kann ich die Meldung ruhig ignorieren?
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
17.01.2006, 21:20 Uhr
(un)wissender
Niveauwart


Der will dir damit sagen, dass diese Zahl zu groß für int ist. Mach mal ein u für unsigned dahinter.

C++:
unsigned magic_number = 3232235522u;



Wenn du jetzt schreibt würdest:

C++:
int magic_number = 3232235522;


Dann gibt es ein Problem. Lass dir die Zahl dann mal ausgeben.

In deinem konkreten Fall passiert allerdings nichts falsches...
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
17.01.2006, 21:28 Uhr
typecast
aka loddab
(Operator)



Zitat von (un)wissender:

Der will dir damit sagen, dass diese Zahl zu groß für int ist. Mach mal ein u für unsigned dahinter.

C++:
unsigned magic_number = 3232235522u;






Ah ok.


Zitat:

Wenn du jetzt schreibt würdest:

C++:
int magic_number = 3232235522;


Dann gibt es ein Problem. Lass dir die Zahl dann mal ausgeben.

In deinem konkreten Fall passiert allerdings nichts falsches...



Die Sache mit dem int war mir klar. Ich hab mich nur gefragt, warum er eine Warnung bringt, wenn ich explizit eine zuweisung zu einem unsigned int mache.

Danke fuer den Hinweis
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)

Dieser Post wurde am 17.01.2006 um 21:28 Uhr von typecast editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
18.01.2006, 07:30 Uhr
(un)wissender
Niveauwart


3232235522 ist implizit ein int, wenn auch kein 32Bit int.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: