Variable bzw. funktion abfrage

Gast #2905887
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.
Moderator Persönliche Seite #2905888
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.
#2905903
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.
Moderator Persönliche Seite #2905939
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.
#2905974
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.
Moderator Persönliche Seite #2906149
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.
#2906164
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...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren