AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Multiplikation von Integerwerten gibt Überlauf
Thema durchsuchen
Ansicht
Themen-Optionen

Multiplikation von Integerwerten gibt Überlauf

Ein Thema von Xplosion · begonnen am 30. Dez 2008 · letzter Beitrag vom 30. Dez 2008
 
Xplosion

Registriert seit: 19. Aug 2005
6 Beiträge
 
#6

Re: Multiplikation von Integerwerten gibt Überlauf

  Alt 30. Dez 2008, 17:47
Hallo
der Vergleich mit zwei Blatt Papier oder 100 L Wasser ist ja sehr anschaulich, aber meiner Meinung nach nicht mal richtig.
Was die Lösung ist, hab ich ja selbst gepostet.

Zitat:
so ist es ja nicht, aber das Ergebnis kann nicht grösser sein als die Variable, in der das Ergebnis gespeichert werden soll - logisch, man kann ja auch nicht 100 l Wasser in einer Sprudelflasche unterbringen. Das sind Grundlagen der Datenverarbeitung überhaupt: im Computer gibt es keine unendlich grossen Zahlen, daher gibt es bei JEDEM Datentyp Zahlen, die nicht mehr hineinpassen.
Ja in welcher Variable wird das Ergebniss gespeichert? In der Integer Variable 'nPotenz'? Kann nicht sein, denn wenn ich 'nPotenz : Integer' als 'nPotenz : Word' deklariere, müsste nach eurer Meinung bei 65535 Schluss sein, bzw. ein Überlauffehler kommen. Ist aber nicht so.

Delphi-Quellcode:
var
  nSize : Int64;
  nPotenz : Word;

nPotenz := 1024;

if nSize > (nPotenz) then
  AFormat := 'fsKilobyte';
if nSize > (nPotenz * nPotenz) then <<< funktioniert obwohl größer als 65535
  AFormat := 'fsMegabyte';
if nSize > (nPotenz * nPotenz * nPotenz) then <<< funktioniert obwohl größer als 65535
  AFormat := 'fsGigabyte';
if nSize > (nPotenz * nPotenz * nPotenz * nPotenz) then <<< hier knallt es wieder weil, > 32Bit
  AFormat := 'fsTerabyte';
if nSize > (nPotenz * nPotenz * nPotenz * nPotenz * nPotenz) then
  AFormat := 'fsPetabyte';
Der Delphi Compiler verwendet also anscheinend für Multiplikationen (intern !!!) einen Integer als Speicheradresse. Liegt warscheinlich daran, dass das aktuelle RAD 2007 noch kein 64Bit Compiler ist.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz