Zitat von
Ceos
wenn man aber mal ehrlich ran geht, ist der aufruf einer methode im conditional statement aber auch ganz böse "bad practice"
selbst der c-compiler standard definiert nicht in welcher reihenfolge methoden in einem statement effektiv ausgeführt werden, von daher sollte die rückgabe einer funktion immer in eine variable geleitet werden, welche dann verarbeitet wird.
ich dachte eigentlich schon, dass eine Reihenfolge durch die Syntaxregeln in C definiert ist:
von links nach rechts, und dann wie lt. dieser Liste: http://en.cppreference.com/w/c/langu...tor_precedence
Und es mag anders, mit Zwischenspeichern, auch eher meinem Schönheitsempfinden zu entsprechen, trotzdem ist gerade in C die Ineinanderverschachtelung von Ausdrücken und Funktionswerten gang und gäbe:
Code:
if (wiringPiSetupGpio() ) {
fprintf (stdout, "oops: %s\n", strerror (errno)) ;
return 1 ;
}
else fprintf (stdout, "\nwiringPi init: OK, by BCM numbering\n") ;
oder gar:
Code:
if(!a->K|(a->X&M)!=M|a->D<=d)
{a->K=Z;a->V=m;a->D=d;A->K=0;
a->X=X|8*(m>q)|S*(m<l);a->Y=Y;
}
...und zugegeben, mit Einschränkungen:
The C language standard doesn't specify operator precedence. It specifies the language grammar, and the precedence table is derived from it to simplify understanding. There is a part of the grammar that cannot be represented by a precedence table: an assignment-expression is not allowed as the right hand operand of a conditional operator
Auf der anderen Seite ist aber auch klar, dass es für C grundsätzlich schon weltweite Standards gibt (u.a. ANSI oder ISO für EU), in denen das haarkllein festgeschrieben ist, nicht aber in dieser Form für Basic, wie du ja schon erwähnt hast
Das Problem bei BASIC ist, daß in der ürsprünglichen Sprachdefinition lokale Variable und Funktionen mit Returnwerten nicht vorkommen. Sie sind bei den jeweiligen BASIC-Versionen nachträglich angestrickt. Das ist mal besser, mal aber auch schlechter gelungen. Nicht umsonst wird BASIC als Programmiersprache auch nicht so recht ernst genommen.
.
Lesezeichen