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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.