Auch wenn ich mir nicht den Status eines Experten/LanguageLawyers anmaßen will, versuche ich, die Fragen nach bestem Wissen zu beantworten, auf Basis von allem, was ich bisher dazu gelesen habe:
Nach allem, was ich bisher gelesen habe, darf beim Auftreten von UB
alles
passieren. Einschließlich der Katzenvideos.
[QUOTE=Sen-Mithrarin;133911]
Auch interessant wäre: Ist mit „undefined behaviour“ gemeint das unklar ist was ein Compiler draus macht oder aber eher wie sich eine bestimmte Platform verhalten wird? Oder vielleicht eine Kombination daraus?
Wie sieht es hier mit der korrekten Deutung und Übersetzung aus? Ist gemeint dass das Ergenis innerhalb eines gewissen Rahmen unbestimmt ist? Oder wie hier proklamiert wird: „Der Compiler darf machen was er will!“?[/QUOTE]
Der Artikel pflückt das ganz gut auseinander. (Das ist das tolle am Internet: Jeder Idiot findet eine Webseite, mit der er seine wertlose Meinung untermauern kann - und wenn nicht, erstellt er einfach eine :D). Der Grundgedanke ist GROB, dass der Standard eine Art „idealisierte Maschine“ beschreibt (ähnlich, wenn auch nicht so konkret und plastisch, wie eine JVM). Und solange alles gut geht, macht die Maschine genau das, was im Standard steht. Aber sobald irgendwo UB auftritt, kann diese Maschine alles machen. Und darauf setzen Compilerbauer eben auf. Wie cmrudolph schon sagte: Das flag „-fwrapv“ erzwingt das gutmütige Verhalten (mit dem nebulösen Nebensatz „…** enables some optimizations and disables other.**“). Es GIBT also per default Optimierungen, die dieses UB ausnutzen, und eben bewirken, dass da NICHT der normale Überlauf stattfindet - siehe auch der stackoverflow-link. Demgegenüber bewirkt „-ftrapv“, dass das Program sich verabschiedet. Eine andere Option. Laut Standard auch OK. Man könnte auch ein flag „-fcatvideo“ einführen, das … naja, sollte klar sein.
EDIT: Welches „Delegation-Spielzeug“ da gemeint ist, weiß ich gerade nicht. Und über das, was notwendig ist, um sich gerechtfertigt als „guter C-Programmierer“ bezeichnen zu dürfen, werde ich mir sicher kein Urteil anmaßen. Ich weiß nur, dass es viele gibt, die sich als „gute C(++)-Programmierer“ sehen, es aber definitiv nicht sind, und ich bin mir sicher, dass sich der überwiegende Teil der C+±Programmierer über viele Details, und ganz speziell den UB-Fall, um den es hier ursprünglich ging, nicht im Klaren sind - deswegen auch die Quizfrage