Komische Zeile, kann sie mir wer erklären?
-
@A-Grau sagte in Komische Zeile, kann sie mir wer erklären?:
@regnes sagte in Komische Zeile, kann sie mir wer erklären?:
Und eine weitere Frage hätte ich noch, es ist ja bekannt, dass man double-Werte nicht ohne Delta vergleichen sollte. Gilt dies auch bei:
double x = 1.0;if (x == 1){
...
}Ist die Frage, ob der compiler dabei das x in einen integer downcastet oder umgekehrt. sollte aber in beiden fällen gehen, schätze ich mal.
Naja ne also es ist schon definiert was da passiert: der
int
wird zudouble
verwandelt und dann die beidendouble
s verglichen.
-
@hustbaer sagte in Komische Zeile, kann sie mir wer erklären?:
Naja ne also es ist schon definiert was da passiert: der int wird zu double verwandelt und dann die beiden doubles verglichen.
Das finde ich gut.
Ist es denn eine allgemeine Regel, dass in C immer in Richtung des Datentyps konvertiert wird, der den größeren Wertebereich aufweist?Btw, ich mache schon ziemlich lange C, aber um die Feinheiten habe ich mich nur gekümmert, wenns Probleme gab.
-
@A-Grau sagte in Komische Zeile, kann sie mir wer erklären?:
Btw, ich mache schon ziemlich lange C,
Ja ne, ist klar. https://en.cppreference.com/w/c/language/conversion
-
@Swordfish sagte in Komische Zeile, kann sie mir wer erklären?:
Ja ne, ist klar.
was stört dich dran?
-
@A-Grau sagte in Komische Zeile, kann sie mir wer erklären?:
@Swordfish sagte in Komische Zeile, kann sie mir wer erklären?:
Ja ne, ist klar.
was stört dich dran?
Es klingt im Zusammenhang wenig glaubwürdig. Aber möglich ist es schon, es gibt immer Leute die etwas Jahre lang machen und sich nicht drum kümmern wie es eigentlich funktioniert.
-
@A-Grau sagte in Komische Zeile, kann sie mir wer erklären?:
Das finde ich gut.
Ist es denn eine allgemeine Regel, dass in C immer in Richtung des Datentyps konvertiert wird, der den größeren Wertebereich aufweist?Jain.
It's complicated.
-
@hustbaer sagte in Komische Zeile, kann sie mir wer erklären?:
Es klingt im Zusammenhang wenig glaubwürdig. Aber möglich ist es schon, es gibt immer Leute die etwas Jahre lang machen und sich nicht drum kümmern wie es eigentlich funktioniert.
Weil es eben funktioniert. Grund zum Nachforschen hat man nur, wen es mal streikt. Wobei ich mich nicht einmal mehr daran erinnern kann, ob es in C etwas gab, das mich richtig genervt hat. 2D-Arrays vielleicht, aber auch das kann man umgehen, indem man sie als a*b-Arrays behandelt, also "flach macht". C ist eine einfache Prog.Sprache die zu schnellen Erfolgen führt. Nicht umsonst gibt es so viele Sprachen die auf der C-Syntax aufsetzen.
Zur Zeit kämpfe ich mich durch Rust, just for fun. Einen wirklichen Vorteil dieser Sprache gegenüber C konnte ich noch nicht entdecken. Das Borrow-Checking finde ich bisher eher nervig.
-
@A-Grau sagte in Komische Zeile, kann sie mir wer erklären?:
C ist eine einfache Prog.Sprache die zu schnellen Erfolgen führt
Damit dürftest Du deinen Troll-Stempel endgültig bekommen haben.
-
@A-Grau sagte in Komische Zeile, kann sie mir wer erklären?:
@hustbaer sagte in Komische Zeile, kann sie mir wer erklären?:
Es klingt im Zusammenhang wenig glaubwürdig. Aber möglich ist es schon, es gibt immer Leute die etwas Jahre lang machen und sich nicht drum kümmern wie es eigentlich funktioniert.
Weil es eben funktioniert.
Woher willst du denn wissen ob es funktioniert, wenn du die genauen Regeln nicht kennst? Schreibst du Unit-Tests für alles die alle erdenklichen Corner-Cases abdecken?
-
@hustbaer sagte in Komische Zeile, kann sie mir wer erklären?:
Weil es eben funktioniert.
Woher willst du denn wissen ob es funktioniert, wenn du die genauen Regeln nicht kennst? Schreibst du Unit-Tests für alles die alle erdenklichen Corner-Cases abdecken?
Er meint, weil sein Programm nicht abstürzt funktioniert es.
-
@A-Grau sagte in Komische Zeile, kann sie mir wer erklären?:
Weil es eben funktioniert.
Dann gib mir mal deinen Source und ich zeige dir, wo du überall UB hast;
ich schätze mal aus Erfahrungen bei anderen "C-Profis": mind. alle 3 Zeilen 1x
-
@Wutz sagte in Komische Zeile, kann sie mir wer erklären?:
@hustbaer sagte in Komische Zeile, kann sie mir wer erklären?:
Weil es eben funktioniert.
Woher willst du denn wissen ob es funktioniert, wenn du die genauen Regeln nicht kennst? Schreibst du Unit-Tests für alles die alle erdenklichen Corner-Cases abdecken?
Er meint, weil sein Programm nicht abstürzt funktioniert es.
Mir ist schon klar was er meint. Ich wollte versuchen ihn mit meiner Frage darauf hinzuweisen dass es da noch ein anderes Verständnis von "funktionieren" gibt.
ps: Und ja, selbst wenn er Unit-Tests für alles hätte die alles abdecken wäre immer noch nicht gesagt dass das Programm immer definiertes Verhalten hat. Aber dann könnte man zumindest mit gutem Gewissen behaupten dass es "funktioniert" - zumindest mit genau der Toolchain und genau der Plattform mit denen er entwickelt/testet.
-
@hustbaer @Wutz Jetzt kommt mal wieder runter. So viel wie der sich für grundlegende Spracheigenschaften interessiert hat er von Unit-Tests noch nie gehört.
-
@Swordfish Auch das ist mir klar. Nochmal: das war ein Wink mit dem Zaunpfal in Richtung dass sein "es funktioniert" vielleicht nicht der Weisheit letzter Schluss ist.
-
Warum nicht einfach
if(var) printf("Null");
?
Ein Cast zu
void
wird nur dazu benutzt eine Warnung zu unterdrücken. Bei deinem Beispiel macht das aber keinen Sinn.Beispiel für so ein Cast wäre früher wohl eher ein assert mit einer hart-kodierten Fehlermeldung gewesen.
assert(((void)"Fehlermeldung", false));
-
Dieser Beitrag wurde gelöscht!
-
@hustbaer sagte in Komische Zeile, kann sie mir wer erklären?:
Woher willst du denn wissen ob es funktioniert, wenn du die genauen Regeln nicht kennst?
Weil es tut was ich will. Woher sonst?
Ich mache das nur aus Hobby. Ist nicht so kritisch wenn es mal nicht geht. Dann wird es ausgebessert.
-
@hustbaer sagte in Komische Zeile, kann sie mir wer erklären?:
Auch das ist mir klar. Nochmal: das war ein Wink mit dem Zaunpfal in Richtung dass sein "es funktioniert" vielleicht nicht der Weisheit letzter Schluss ist.
Es gibt eigentlich kein fehlerfreies Pogramm, nicht mal solche, die viel Geld kostem.
-
@A-Grau sagte in Komische Zeile, kann sie mir wer erklären?:
Weil es tut was ich will. Woher sonst?
-
@A-Grau
Wenn es dich nicht interessiert wie das eigentlich alles funktioniert/definiert ist, OK. Das ist deine Sache. Aber dann antworte bitte nicht zu Dingen die du nicht verstehst und auch gar nicht verstehen willst.