Was passiert, wenn ich uint kleiner null mache?

#1549827
Lesenswert?

Peter schrieb:
>> > uint8_t sind immer 8 bit, und 8 Bit sind immer Definiert. Also kenn es
>> > schon mal nicht undefiniert sein.
>> Stimmt so nicht.
> sagst du auch noch warum nicht?

Nach deiner 'Definition' wäre grundsätzlich alles und jedes in einem 
Computer definiert. Denn irgendeinen Wert muss ja jedes Bit haben. Es 
wird ja nicht aus dem Nichts heraus erzeugt, sondern ist hardwaremässig 
immer vorhanden.

Mit undefiniert ist aber gemeint: Ist in der Sprachdefinition für diesen 
Fall eine Regel vorhanden, die dem Programmierer (und auch dem 
Compilerbauer) die Information liefert, welcher Wert nach der Operation 
vorliegen muss.

Und in diesem Fall ist genau das der Fall.
Für unsigned Rechnungen ist im C-Standard tatsächlich festgelegt, wie 
sich die Berechnung verhalten muss, wenn ein Overflow bzw. Underflow 
erfolgt.
Und das hat nichts mit 8 Bit zu tun, sondern damit, dass es sich um 
unsigned Arithmetik handelt.
#1549881
Lesenswert?

> uint8_t sind immer 8 bit, und 8 Bit sind immer Definiert.

Natürlich ist für jeden elementaren Typ der Wertebereich definiert; das 
ist banal.

Dir Frage richtete sich aber nicht auf den Wertebereich, sondern eine 
bestimmte arithmetische Operation, die auf einen solchen Typ angewandt 
wird.  Und mit einer kleinen Modifikation wäre die schon undefiniert 
gewesen, obwohl es sich immer noch um 8 Bit gehandelt hätte.  Obige 
Aussage ist also im vorhandenen Kontext eine Nullaussage und beantwortet 
die Frage (wenn sie denn als brauchbare Lösung in Betracht käme) falsch.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren