ODER Ausdruck. Reihenfolge der Auswertung.
-
Hallo,
if ( (c = fgetc (fp)) == 'x' || c == 'y' )
Ist es vorgeschrieben, welcher Teil zuerst ausgewertet wird?
Kann es sein, das erst c == 'y' und dann erst aus der Datei gelesen wird?MfG,
r.n.
-
Links nach rechts.
-
Hallo
Das sieht nach ziemlich unglücklichen Code aus...
Mfg.
way
-
reihenfolge n00b schrieb:
if ( (c = fgetc (fp)) == 'x' || c == 'y' )
Ist es vorgeschrieben, welcher Teil zuerst ausgewertet wird?
Kann es sein, das erst c == 'y' und dann erst aus der Datei gelesen wird?mach besser so:
c = fgetc (fp); if (c == 'x' || c == 'y') { ... }
dann stellen sich solche fragen garnicht erst.
-
Bei einer UND-Verknüpfung ist auch schön, dass der zweite Ausdruck gar nicht mehr ausgewertet wird, wenn der erste schon false ist. Das erlaubt interessante Konstrukte.
-
way schrieb:
Hallo
Das sieht nach ziemlich unglücklichen Code aus...
Mfg.
wayHmm wieso?
+fricky schrieb:
reihenfolge n00b schrieb:
if ( (c = fgetc (fp)) == 'x' || c == 'y' )
Ist es vorgeschrieben, welcher Teil zuerst ausgewertet wird?
Kann es sein, das erst c == 'y' und dann erst aus der Datei gelesen wird?mach besser so:
c = fgetc (fp); if (c == 'x' || c == 'y') { ... }
dann stellen sich solche fragen garnicht erst.
stimmt, aber wenn man es weiss, kann man codezeilen sparen.
aber laut Bashar ist die reihenfolge ja in sinnvoller folge festgelegt.
-
Trotzdem ist es IMHO etwas unschön und verwirrend.
Wenn unbedingt alles in eine Zeile soll, wäre vielleicht
if (c = fgetc(fp), c == 'x' || c == 'y')
noch besser, da ist die Zuweisung besser von den Vergleichsoperationen getrennt, und die beiden Vergleiche stehen als Paar hübsch nebeneinander, ohne dass in einen noch eine Zuweisung hereingemogelt ist.
-
reihenfolge n00b schrieb:
stimmt, aber wenn man es weiss, kann man codezeilen sparen.
2 bytes pro zeile oder so. wie viele bytes hat deine festplatte?
-
+fricky schrieb:
reihenfolge n00b schrieb:
stimmt, aber wenn man es weiss, kann man codezeilen sparen.
2 bytes pro zeile oder so. wie viele bytes hat deine festplatte?
3 :p
kleiner scherz. haha.
es geht mir nicht um festplattenspeicher sondern um die scrollorgien durch
den quellcode.namespace invader schrieb:
Trotzdem ist es IMHO etwas unschön und verwirrend.
Wenn unbedingt alles in eine Zeile soll, wäre vielleicht
if (c = fgetc(fp), c == 'x' || c == 'y')
noch besser, da ist die Zuweisung besser von den Vergleichsoperationen getrennt, und die beiden Vergleiche stehen als Paar hübsch nebeneinander, ohne dass in einen noch eine Zuweisung hereingemogelt ist.
das finde ich übersichtlicher als meine variante
-
reihenfolge n00b schrieb:
stimmt, aber wenn man es weiss, kann man codezeilen sparen.
Codezeilen zu sparen, wenn dadurch die Lesbarkeit in die Tonne geht, ist das dummste was man machen kann. Dem Compiler ist es vielleicht wurscht, ein gute r wird die Sachen optimieren, aber wir sind dumme Menschen, die mehr auf Lesbarkeit angewiesen sind als auf kompakten Code (außer du machst beim Obfuscated C Code Contest mit)