S
groovemaster schrieb:
fricky schrieb:
wenn, wie wir nun alle wissen, 0 == (void)0* wahr ist, dann kann der selbe cast auf beiden seiten, ob nun nach ptrdiff_t, char oder double, auch nichts dran ändrn.
Doch. Der Cast verhindert eben das gleiche Verhalten wie bei der impliziten Umwandlung. Ich bin mal so frei und verweise auf campers letzten Absatz.
supertux schrieb:
Ich finde das Ergebnis überraschend, z.b. dass Test 06 fehlschlägt.
Das ist allerdings absolut plausibel. "0" wird ja immer noch in den im Compiler implementierten "echten" Nullzeiger umgewandelt, unabhängig von NULL. Eine Redefinition von NULL bringt hier nichts. Du müsstest dem Compiler schon beibringen, dass der Nullzeiger die Adresse 0xa hat.
supertux schrieb:
Kann es sein, [...] ich in der Tat den Nullpointer gar nicht neu definiert habe sondern nur den Macro?
Genau so ist es.
hab ich mir schon gedacht, als die Ergebnisse nicht dem entsprachen, was ich mir vorgestellt habe. Schade, würde gerne sowas im Realfall beobachten, aber ich werde 100% den GCC Code nur deswegen nicht verändern (krieg ja Kopfschmerzen, wenn ich mir diesen Code anschauen )
Jedenfalls, danke an camper und groovemaster, sehr gute Erklärung, endlich hab ich den Unterschied verstanden.