Verodern von zwei Variablen



  • Hallo zusammen, 🙂
    ich verstehe folgende Aufgabe nicht.
    Wir sollen die Ausgabe bestimmen.

    Verodern kenne ich nur z.B. im Zusammenhang mit if-Verzweigungen oder Schleifen.
    Die Logik hier verstehe ich aber leider nicht 😞
    Es werden beide Variablen inkrementiert. Aber warum??
    Warum werden beide inkremetiert und nicht nur einer ? Das würde ja eigentlich reichen.
    Und was macht es für einen Sinn die beiden Anweisungen zu verodern.

    int main(int argc, char** argv) {
    
        int j,i;
        i=0;
        j=-1;
    
        j=++j || i++;
        cout << i << " " << j << endl;
    
        return 0;
    }
    

    vielen Dank 🙂



  • Es ist auch das Gleiche wie in einer if-Bedingung. || liefert eben einen boolschen Wert, 1 oder 0.
    Die Tücke hier sind das Prä- und das Postinkrement.

    int j,i;
    i=0;
    j=-1;
    
    j=++j || i++; // j wird erhöht und dann ausgewertet, i wird ausgewertet und dann erhöht
    // j = 0 || 0; 
    // -> j = 0;
    // -> i ist jetzt aber 1 (!)
    

    Vielleicht eine kleine Stütze:
    Postinkrement: „holen” und anschließend erhöhen.
    Präinkrement: erhöhen und anschließend „holen”.


  • Mod

    yahendrik schrieb:

    || liefert eben einen boolschen Wert, 1 oder 0.

    0 und 1 sind integer, boolsche Werte wären true und false. Der Vollständigkeit halber müsste also auch noch auf die hier auftretenden Konvertierungen eingegangen werden.



  • Stimmt camper, du hast natürlich recht.



  • jo perfekt 👍
    danke euch 🙂


Anmelden zum Antworten