[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[Debian] C++-Knobelaufgabe (OT?)



Hallo,

vielleicht OT, weil nicht Linux, aber es ist C++ und passiert auch unter
Linux ;-)

Hier folgen zwei kleine Programme und ich suche eine plausible Erklärung
für die Ausgabe.  (Passieren hier undefinierte Dinge?  Wenn ja, wo
steht, daß es undefiniert ist, was passiert?)

Probiert sowohl mit gcc version 2.95.2 20000220 (Debian GNU/Linux)
als auch mit MSCVC++ 6.0.  (Wenn ich mich recht erinnere, dann dort mit
den selben Resultaten.)

    Danke schonmal.

        Heiko

#include <iostream>
using namespace std;

int main()
{
    int z = 5;

    // (1)
    // was passiert?  Werden wir 67 oder 76 sehen?
    cout << ++z << ++z << endl;                     // -> 76

    double d = 5;
    int i = 5;
    
    // (2)
    // Und was werden wir hier wohl sehen?
    // (Was überhaupt, und auch zweimal das selbe?)
    cout << ++d * ++d << endl;                      // -> 42
    cout << ++i * ++i << endl;                      // -> 49

    return 0;
}


Vielleicht kann das ja einer, der sich als C++-Experte fühlt,
mal bitte ausprobieren.  Für C-Jünger ist wenigstens noch ein Problem
(das erste):

#include <stdio.h>

int main()
{
    int z = 5;
    double d = 5;
    int i = 5;

    // was passiert?  Werden wir 67 oder 76 sehen?
    printf("%d%d\n", ++z, ++z);

    // -> Es ist jedesmal 42 zu sehen, das leuchtet mir auch
    // einigermaßen ein.  Ist also in C kein Problem.
    printf("%f\n", ++d * ++d);
    printf("%f\n", ++i * ++i);

    return 0;
}


-- 
-----------------------------------------------------------
Um sich aus der Liste auszutragen schicken Sie bitte eine
E-Mail an debian-user-de-request@lehmanns.de die im Subject
"unsubscribe <deine_email_adresse>" enthaelt.
Bei Problemen bitte eine Mail an: Jan.Otto@Lehmanns.de
-----------------------------------------------------------

864 eingetragene Mitglieder in dieser Liste.


Reply to: