unsigned char - außerhalb des Wertebereichs
-
Wieder mal was einfaches für euch:
Wenn ich eine Zahl die größer ist als 255 ist in unsigned char umwandle, dann ist das Ergebnis der Rest.Beispiel:
unsigned char test = 400;
cout << (int)test; // gibt 144 ausIch hätte es aber gerne so, dass wenn der Wert größer ist, die Variable den größtmöglichen Wert des Wertebereiches annimmt.
Also bei test=400 ist es dann 255.Lässt sich das durch den Kompiler einstellen, oder liegt es fest in der Natur von C++?
Oder kennt jemand sonst nen Weg wie man das möglichst einfach umsetzen könnte?Danke im Voraus.
EDIT:
MIST....aus versehen in Mathematik gepostet...tut mir leid
...sollte eigentlich in Programmiersprachen/C++
-
vielleicht sowas?
#define TRUNCATE_TO_255(a) ((a)>255?255:(a))
-
VHASE schrieb:
Lässt sich das durch den Kompiler einstellen, oder liegt es fest in der Natur von C++?
Das liegt in der Natur von C(++) - Ganzzahltypen rechnen mit Modulo-Arithmetik.
Oder kennt jemand sonst nen Weg wie man das möglichst einfach umsetzen könnte?
Du könntest das in eine Funktion auslagern:
template<typename INT_TYPE> checked(unsigned long val) { return val>numeric_limits<INT_TYPE>::max() ? numeric_limits<INT_TYPE>::max() : val; } unsigned char test = checked<unsigned char>(400);
-
Dieser Thread wurde von Moderator/in Jester aus dem Forum Mathematik in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.