Forum: Compiler & IDEs Variable bzw. funktion abfrage


von Bend G. (frankyfarell0)


Lesenswert?

Hallo an alle,

Was ist der Unterschied zwischen
- if(true == variable bzw. funktion())  und
- if(variable bzw.funktion() == true )  ??

Danke

von Peter II (Gast)


Lesenswert?

Bend Guet schrieb:
> Was ist der Unterschied zwischen

die Fehlermeldung wenn man nur ein = schreibt.

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

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 "=".

von Peter II (Gast)


Lesenswert?

Magnus M. schrieb:
> Ich sehe da kein einzelnes "=".

deswegen habe ich ja geschrieben "wenn man nur ein = schreibt"

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

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" !

von Peter II (Gast)


Lesenswert?

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.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

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.

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Hm... macht Sinn...

Ich gebe mich geschlagen  :)

von Karl H. (kbuchegg)


Lesenswert?

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.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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.

von Bend G. (frankyfarell0)


Lesenswert?

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!!!!

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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.

von Tom K. (ez81)


Lesenswert?

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...

von Klaus (Gast)


Lesenswert?

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!

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.