Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » int, long, long int?

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 <
010
15.09.2003, 15:59 Uhr
proga



sizeof(double) unter Windows 2000 -> 8 Byte
Habe eben folgendes ausprobiert:
pow((double)2, (double)31);
und bekomme dann auch 2147483648
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
15.09.2003, 16:00 Uhr
Pablo
Supertux
(Operator)



Zitat:
0xdeadbeef postete
Bei mir (Debian Sid, gcc 3.3.2-pre) gibt pow(2,31) genau 2147483648 zurück, wie dieses Programm eindrucksvoll zeigt:

C++:
#include <math.h>
main(){printf("%lf\n", pow(2, 31));




So bekomme ich auch positiv, weil das float bzw. double ist. Mach

C++:
#include <math.h>
main(){printf("%d\n",  pow(2, 31));}



PS: Was macht l zwischen %f ?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
15.09.2003, 16:02 Uhr
Pablo
Supertux
(Operator)



Zitat:
proga postete
sizeof(double) unter Windows 2000 -> 8 Byte
Habe eben folgendes ausprobiert:
pow((double)2, (double)31);
und bekomme dann auch 2147483648



Das hängt von long und nicht vom double ab.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
15.09.2003, 16:16 Uhr
proga



was genau hängt von Long ab ??? Offensichtlich werden bei mir 2 und 31 falsch verarbeitet, wenn man diese nicht explicit in double castet, was ich allerdings sehr komisch finde...
Außerdem steht %d für dezimale INTEGER-Zahl mit Vorzeichen

Dieser Post wurde am 15.09.2003 um 16:20 Uhr von proga editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
15.09.2003, 16:29 Uhr
0xdeadbeef
Gott
(Operator)


@Pablo: Das l zwischen % und f bedeutet, dass ein langer float (double) als Argument kommt. Was den Fehler unter Win2K angheht - ich würde vermuten, dass du den Code als C++ übersetzt hast und auf eine template-Funktion

C++:
template <typename _val_t> _val_t pow(_val_t base, _val_t exponent)
{
  //...
}


gestoßen bist. Übrigens ist ne kürzere Möglichkeit, ((double) 2) zu schreiben, 2.0L.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
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: