Frage zum logischen && und Printf
-
void main() { int i,j,erg; i=j=0; erg=i++&&j++; printf("%d %d %d\n",erg,i,j); // = 010
Warum kommt in folgender Berechnung als Ausgabe 010 herraus ? Ich versteh das nicht
-
Wie soll denn der Sinn in erg=i++&&j++; liegen O_o
Wenn ich es nicht besser wüsste würde ich sagen, das sowas undefiniert ist.
-
Über den Sinn grübel ich jetzt auch schon längere Zeit nach. Das ist exakt das was auf einem Aufgabenblatt eines Tutors steht
-
feigling schrieb:
Wenn ich es nicht besser wüsste würde ich sagen, das sowas undefiniert ist.
meinst das ist undefiniert?
man könnte ja auch sagen dass der rest des ausdrucks (alles rechts vom &&) nicht mehr ausgeführt wird, weil 'i' 0 ist...edit: auch wenn's vielleicht definiert ist. schreiben sollte man solchen code nie im leben
-
kann man das rechts vom && eig mit einem kommentar, da nicht behandelt, gleichsetzen?
...meine abgesehen von der uebersichtlichkeit.
-
Obvillian schrieb:
kann man das rechts vom && eig mit einem kommentar, da nicht behandelt, gleichsetzen?
...meine abgesehen von der uebersichtlichkeit.nein. es ist einfach nur nicht ausgefuehrt worden, weil der && operator die evaluation der rechten seite nicht mehr fuer das ergebnis brauchte.