C++ zu großer Integer

  • #1
S

sax553

Bekanntes Mitglied
Themenersteller
Dabei seit
25.03.2005
Beiträge
127
Reaktionspunkte
0
Hallo zusammen,

ich habe nicht sehr viel ahnung vom Programmieren und hoffe das Ihr mir helfen könnt.

Ich Programmiere mit C++ im Borland C++ Builder 5. Ich möchte mir einer Variable Rechnen welche folgenden wert hat: 128571441012201312
Wenn ich aber das Programm ausführe bekomme ich eine Fehlermeldung, das diese Zahl kein Gültiger Integerwert ist (ist wohl zulang). Nun habe ich eine Funktion gefunden um dies Umzurechnen
int1 = int2.HighPart * (2^32) + int2.LowPart


Dies ist aber VBS, weis jemand wie dieser aufruf in C++ lauten könnte.

Danke und Gruß Sax
 
  • #2
Du musst einen 64-Bit-Integer verwenden. Den Bezeichner dazu musst du in der Dokumentation zu deinem Compiler nachsehen.

longlong wird in älteren Compilern verwendet, ulong könnte unsigned und long signed 64-Bit sein.
 
  • #3
versuche mal die var als unsingned long int zu deklarieren,
müsste gehen.

zieh dir mal die verschiedenen variablentypen rein, denn integer ist net gleich integer ;-)

man unterscheidet zB
short int, int, long int, wobei es die jeweils als signed oder unsigned gibt, also vorzeichenbehaftet oder nicht. so hat jeder integer- typ seinen wertigkeistbereich von x bis y.
 
  • #4
Overwrite schrieb:
zieh dir mal die verschiedenen variablentypen rein, denn integer ist net gleich integer ;-)

Das stimmt, die Wertebereiche sind nicht einmal standardisiert, können sich also von Compiler zu Compiler unterscheiden. Es gibt nur Mindestanforderungen bei den Integer-Typen, in C direkt, in C++ indirekt (für int: the natural size suggested by the architecture of the execution environment).

versuche mal die var als unsingned long int zu deklarieren, müsste gehen.

Das glaube ich nicht (0 bis mindestens 4294967295;->unsigned long int' und->unsigned long' sind gleichwertig). 128571441012201312 passt da also bei weitem nicht rein.


Im C-Standard ist seit 1999->long long' definiert (-9223372036854775807 oder kleiner bis mindestens 9223372036854775807;->unsigned long long' 0 bis mindestens 18446744073709551615), aber nicht im C++-Standard.
Wie Metzi also schon schrieb: In der Doku nach 64-Bit-Integer-Typen schauen. Ich kenne mich mit Borland nicht aus, tippe aber auf etwas wie __uint64 / uint64_t / u_int64_t bzw. ohne->u', je nach Bedarf.
 
  • #5
ok, du hast gewonnen ;)
 
  • #6
Overwrite schrieb:
ok, du hast gewonnen ;)

Juhuu (Homer). Nein, wegen der recht offenen Definition (und dann noch der Unterschiede zwischen C und C++ sowie zwischen verschiedenen Systemen) kann man schon mal danebenliegen bzw. muss einfach nachschlagen. Es gibt da schon merkwürdige Dinge, z.B. ints mit 3 Byte oder alle Integer-Typen mit 32 Bit (wenn auch nicht auf dem PC).
 
Thema:

C++ zu großer Integer

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.965
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben