Hallo an alle, Was ist der Unterschied zwischen - if(true == variable bzw. funktion()) und - if(variable bzw.funktion() == true ) ?? Danke
Bend Guet schrieb: > Was ist der Unterschied zwischen die Fehlermeldung wenn man nur ein = schreibt.
Bend Guet schrieb: > Was ist der Unterschied zwischen > - if(true == variable bzw. funktion()) und > - if(variable bzw.funktion() == true ) ?? Ausser der Schreibweise gibts keinen Unterschied. Peter II schrieb: > die Fehlermeldung wenn man nur ein = schreibt. Ich sehe da kein einzelnes "=".
Magnus M. schrieb: > Ich sehe da kein einzelnes "=". deswegen habe ich ja geschrieben "wenn man nur ein = schreibt"
Peter II schrieb: > deswegen habe ich ja geschrieben "wenn man nur ein = schreibt" Dann hättest du genauso gut schreiben können "wenn man iff schreibt" !
Magnus M. schrieb: > Dann hättest du genauso gut schreiben können "wenn man iff schreibt" ! nein, weil das genau der Grund ist warum man die Schreibweise umdreht und so auch üblich ist. ein if ( a = 1 ) liefert keine Fehlermeldung eine if ( 1 = a ) liefert eine fehlermeldung. Aus dem Grund schreiben einige es andersrum.
Magnus M. schrieb: > Ausser der Schreibweise gibts keinen Unterschied. Zur Erläuterung: es gibt durchaus Leute, die ab und zu versehentlich ein einfaches Gleichheitszeichen statt einem doppelten schreiben. Um zu vermeiden, dass so ein Fehler unbemerkt bleibt, vertauschen diese Leute beim Vergleich die beiden Terme links und rechts, d.h. sie geben die Konstante dann stets auf der linken Seite an. So meckert dann der C-Compiler, wenn man mal ein Gleichheitszeichen vergisst.
Frank M. schrieb: > Magnus M. schrieb: >> Ausser der Schreibweise gibts keinen Unterschied. > > Zur Erläuterung: es gibt durchaus Leute, die ab und zu *versehentlich* > ein einfaches Gleichheitszeichen statt einem doppelten schreiben. OK. Am Anfang seiner Karriere macht man das schon mal. Von den geübteren Programmiereren kenne ich keinen, der diesen Fehler in letzter Zeit mal gemacht hätte. VOn mir selbst weiß ich, dass ich diesen Fehler mindestens seit 15 Jahren nicht mehr gemacht habe. Von daher bevorzuge ich die Schreibweise, die meiner Denkweise näher kommt.
Karl Heinz Buchegger schrieb: > OK. Am Anfang seiner Karriere macht man das schon mal. Ja, hat bestimmt schon jeder mal gemacht. > Von den geübteren Programmiereren kenne ich keinen, der diesen Fehler in > letzter Zeit mal gemacht hätte. Ich auch nicht. Aber ich hatte mal einen Kollegen, der hatte das konsequent "verkehrt herum" geschrieben. Als ich ihn fragte, warum, erklärte er es mir. Ich konnte mich aber nie mit dieser Schreibweise anfreunden, denn es las sich einfach "komisch"... > VOn mir selbst weiß ich, dass ich diesen Fehler mindestens seit 15 > Jahren nicht mehr gemacht habe. Von daher bevorzuge ich die > Schreibweise, die meiner Denkweise näher kommt. Eben. Ich finde die "umgekehrte Schreibweise" auch nicht intuitiv. Deshalb verwende ich sie auch nicht.
Frank M. schrieb: > konsequent "verkehrt herum" geschrieben. Als ich ihn fragte, warum, > erklärte er es mir. Ich konnte mich aber nie mit dieser Schreibweise > anfreunden, denn es las sich einfach "komisch"... Ein ehemaliger Kollege hat das auch mal gemacht. Genauso wie er mal eine Zeit hatte, der er konsequent if( 5 < i && i < 15 ) für Bereichsabfragen geschrieben hat, weil es ja so schön ist, wenn die Grenzen syntaktisch aussen stehen. Nachdem er sich das 50-te mal in der Logik vertan hatte, hab ich ihn dann endlich dazu gebracht, die üblichen Schreibweisen zu benutzen, die so hingeschrieben werden, wie wir sprechen. Danach war dann Ruhe. Den == versus = Fehler hat er übrigens auch danach nie gemacht (soviel ich weiß). D.h. mein Fazit. Im Prinzip stimmt die Argumentation schon. In der Theorie. In der Praxis ist das allerdings kein echtes Problem. Wenn ich auf der Zugspitze wohne, lege ich mir ja auch kein Schlauchboot in den Schuppen, weil ja eine Überschwemmung kommen könnte.
Hallo alle zusammen, ich bedanke mich noch einmal recht herzlich für die tolle und gut erklärten Antwort meine Frage. Das hat sehr viel Spaß gemach oder!!!!
Karl Heinz Buchegger schrieb: > Von den geübteren Programmiereren kenne ich keinen, der diesen Fehler in > letzter Zeit mal gemacht hätte. Außerdem beherrschen die Compiler seit vielen Jahren schon die Kunst, einem dann zumindest eine Warnung an den Kopf zu werfen. Insofern träfe das Problem sowieso nur die Ignoranten, die glauben, Warnungen wären was Unwichtiges, das man ignorieren darf. Btw., ein Vergleich auf "== true" ist Unfug. "true" ist ein Boolscher Wert, und wenn eine Variable oder Funktion bereits einen Boolschen Wert hat bzw. liefert, dann kann man den direkt im "if" benutzen. Man gewinnt kein bisschen "Sicherheit", wenn man dann noch zusätzlich auf == true (oder != false oder was auch immer) testet.
1 | #include <stdio.h> |
2 | int main(void) |
3 | {
|
4 | int i = 0; |
5 | if (i = 11) |
6 | puts("Elf"); |
7 | return 0; |
8 | }
|
Der gcc warnt mit -Wall:
1 | 1.c: In function ‘main’: |
2 | 1.c:5: warning: suggest parentheses around assignment used as truth value |
Vermutlich warnen andere Compiler ähnlich. >ein if ( a = 1 ) liefert keine Fehlermeldung eine if ( 1 = a ) liefert >eine fehlermeldung. Aus dem Grund schreiben einige es andersrum. Diese Spezialisten schreiben also lieber Code wie Yoda als die Warnungen des Compilers zu aktivieren...
Tom K. schrieb: > Diese Spezialisten schreiben also lieber Code wie Yoda als die Warnungen > des Compilers zu aktivieren... Viel lernen du noch musst, junger Padawan!
Klaus schrieb: > Tom K. schrieb: >> Diese Spezialisten schreiben also lieber Code wie Yoda als die Warnungen >> des Compilers zu aktivieren... > > Viel lernen du noch musst, junger Padawan! Klar, damit die, die schon seit 20 Jahren für Menschen nicht lesbaren Code schreiben, nichts lernen müssen. ;-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.