Warum ist ein vorzeichenloser Ganzzahlüberlauf als Verhalten definiert, ein vorzeichenbehafteter Ganzzahlüberlauf jedochC++

Programme in C++. Entwicklerforum
Anonymous
 Warum ist ein vorzeichenloser Ganzzahlüberlauf als Verhalten definiert, ein vorzeichenbehafteter Ganzzahlüberlauf jedoch

Post by Anonymous »

Der Ganzzahlüberlauf ohne Vorzeichen ist sowohl im C- als auch im C++-Standard gut definiert. Beispielsweise ist der C99-Standard (

Code: Select all

§6.2.5/9
) besagt


Eine Berechnung mit vorzeichenlosen Operanden kann niemals überlaufen,
da ein Ergebnis, das nicht durch den resultierenden vorzeichenlosen Ganzzahltyp dargestellt werden kann, modulo um die Zahl reduziert wird, die eins größer ist als der größte Wert, der durch den resultierenden Typ dargestellt werden kann.


Allerdings beide Standards Geben Sie an, dass ein vorzeichenbehafteter Ganzzahlüberlauf ein undefiniertes Verhalten ist. Wiederum aus dem C99-Standard (

Code: Select all

§3.4.3/1
)


Ein Beispiel für undefiniertes Verhalten ist das Verhalten bei einem Ganzzahlüberlauf


Gibt es einen historischen oder (noch besser!) einen technischen Grund für diese Diskrepanz?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post