unsigned int (C++)

Neue Frage »

earthie Auf diesen Beitrag antworten »
unsigned int (C++)
Hallo,

im Informatikerboard ist tote Hose, darum hier ne kleine Frage zu C++ :

Was passiert beim Typ unsigned int bei Unterlauf, also:

bool foo() {
unsigned int a=2;
unsigned int b=3;
return (a-b<2);
}

wird der Typ von a-b automatisch nach int konvertiert oder geschieht der umgekehrte Effekt des Überlaufs (also die zahl wird sehr gross)?

Irgendjemand von euch hat sicher schon was von C++ gehört Augenzwinkern

Danke für die Hilfe!
Duedi Auf diesen Beitrag antworten »

Automatische Konvertierung in C++? Gibts sowas nicht nur in VBA? Big Laugh . Allerdings kann ich das nur vermuten, nicht begründen.
 
 
Mathewolf Auf diesen Beitrag antworten »

Soviel ich weiß, werden Typen in C++ nicht automatisch konvertiert. Verlässt das Ergebnis den Definitionsbereich des Typus, dann gibt der Compiler einen Error aus.

Ansonsten Schreib eine kleine Testroutine und schau, was geschieht. ;-)
Calvin Auf diesen Beitrag antworten »
RE: unsigned int (C++)
Zitat:
oder geschieht der umgekehrte Effekt des Überlaufs (also die zahl wird sehr gross)?


Ungetestet gehe ich davon aus, dass das der Fall sein wird. Zumindest passiert das bei signed int-Zahlen.

Hast du keine Möglichkeit, es zu testen?

EDITh hat dazu was gefunden: http://de.wikibooks.org/wiki/C%2B%2B-Pro...ypen#Ganzzahlen
Draos Auf diesen Beitrag antworten »
RE: unsigned int (C++)
Alles C++ wandelt, so recht ich mich erinnere, jedes Ergebnis einer int Rechnung zu erst in die größte ihn bekannte Ganzzahl um und konvertiert, dann oder presst es in die gewünschte Form.

unsigned int heißt vorzeichenlos, er würde aber -1 rausbekommen, da er es nicht formatieren muss. Heißt es allerdings a-=b und würde er die -1 also das Maximum von unsigned int rauskommen. Liegt bei etwa

Eben getestet: Es war fast so. Wenn ein großer Speichertyp mit einen kleineren in Verbindung gebracht wurde, dann wurde alles erst vom Typ des großen umgewandelt und dann notfalls, kompremiert.

Bei deiner ist jedoch die Lösung.
earthie Auf diesen Beitrag antworten »

Jo, danke hab im Moment grad nicht die Möglichkeit das zu testen, gehe mal davon aus, dass es kein Standardverhalten gibt.
Draos Auf diesen Beitrag antworten »
RE: unsigned int (C++)
code:
1:
2:
3:
4:
5:
6:
bool foo{
 unsigned int a=2,b=3;
 return (a-b<2);
}


Ergab um genau zu sein 0 false
earthie Auf diesen Beitrag antworten »

Danke Draos.

also dann gibts ne grosse Zahl, aber auf jeden Fall sollte man den Unterlauf vermeiden, da anscheinend kein Fehler ausgegeben wird

Gruss
Draos Auf diesen Beitrag antworten »

Oder du machst folgendes: (long int-> 64-Bit Ganzahl)
code:
1:
2:
3:
4:
5:
6:
bool foo{
unsigned int a=3,b=2;
return ((long int)(a-b)<2);
};


Da kommt true raus, durch vorherige Formatierung
Neue Frage »
Antworten »



Verwandte Themen