Aconcagua hat folgendes geschrieben : |
| In beiden Zeilen wird dann - oh großes Wunder - beide Male dieselbe Zahl geschrieben - also insbesondere tritt keine Ausnahme auf (VS 2005). |
Nicht unbedingt, das hängt vom "/checked"-Switch ab.
Eigentlich ist das Konzept in sich völlig schlüssig: Ausdrücke, bei denen man einen Überfluss hinnehmen/verhindern will, umgibt man explizit mit unchecked/checked; den Rest des Codes stempelt man damit implizit mit "hier sollte eigentlich kein Overflow vorkommen" ab. Debuggt man nun mit /checked+, wird man auf alle weiteren Overflows hingewiesen, im Release-Build sind diese zusätzlichen Abfragen der Performance zuliebe verschwunden.
VS benutzt nun in den Standardeinstellungen leider selbst beim Debug-Build /checked-, womit der Sinn von unchecked schon ein wenig infrage gestellt wird. Aber nicht jeder benutzt die Mainstream-Settings, also immer schön unchecked benutzen, wenn man einen Overflow provozieren will

.
Das Ganze geht aber eigentlich an der Diskussion vorbei

, denn Konstanten werden ja zur Compile Time ausgewertet, da hat kein Compiler-Schalter Auswirkungen.
@Christian: Angenommen, ich habe irgendwoher (andere Assembly?) eine uint-Konstante, rechne damit ein bisschen herum und will es dann in einer int-Konstanten speichern. Und wundere mich dann, warum ein negativer Wert herauskommt... und was das gerade für ein realistisches Beispiel ist

[*]. Nunja, "ich will nen anderen Typ" und "bitte ohne Warnanlage" sind aber einfach zwei verschiedene Aussagen an den Compiler, zur Compile- und zur Runtime. So

.
[*]Genauso realitätsfern wie imho das gesamte Thema

. Overflow in Konstanten... ich bin immer davon ausgegangen, dass man uint-Werte am besten in uint-Konstanten speichert

.