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.


Anmelden zum Antworten