Paar kleine Fragen



  • Moin Moin

    Hab paar kleinere Fragen.

    Hab hier folgendes Programm

    #include <stdio.h>
    #define MOD 5
    #define MAX 010+2

    int main(void)
    {
    int i = 4711;
    printf("Wert von Mod : %2d\n", MOD);
    printf("Wert von Max : %2d\n", MAX);
    printf("Wert von 2*Max: %2d\n", 2*MAX);

    for(i=0; i < MAX; i=i+1)
    {
    printf("\t%d", i);
    if((i+1)%MOD!=0)
    continue;
    printf("\n");
    }
    printf("\n");

    do
    {
    printf("%i ", i);
    i=i-1;
    }while(i);
    printf("\n");
    return 0;
    }

    #define MAX 010+2 : Warum gibt der mir den Wert 10 aus und bei 2*Max 18? Versteh das nicht, heisst es nicht 10+2=12 beim define?

    if((i+1)%MOD!=0): Was genau macht das %MOD!=0? also mod ungleich null ist klar aber wofür steht das %?

    Achso nur zum verständnis, ne literale Konstante ist nur der Wert oder? also z.B. 2 ? Ne symbolische ist dann ne Deklaration wie z.B. i = 5 oder?

    Was genau ist eine abweißende und annehmende schleife?

    Gibts noch ne gute seite die Zahlensysteme erklärt? also 2er Komplement addieren von HEX/binär usw?

    Schonmal danke im vorraus. 🙂



  • mazeli schrieb:

    #define MAX 010+2 : Warum gibt der mir den Wert 10 aus und bei 2*Max 18? Versteh das nicht, heisst es nicht 10+2=12 beim define?

    Verwende Code Tags und dann wird sich wer deinen Quelltext durchlesen.

    wofür steht das %?

    Google nach Modulo Operator.

    Achso nur zum verständnis, ne literale Konstante ist nur der Wert oder? also z.B. 2 ? Ne symbolische ist dann ne Deklaration wie z.B. i = 5 oder?

    Nein.

    /* - Dekleration
       - foo: Bezeichner, symbolische Variable ( = Variable), Objekt
       - Variable definiert einen Bereich im Arbeitsspeicher mit der Bezeichnung foo,   der int Werte speichert
       - 42 ist eine Literalkonstante
       - 42 initialisiert foo 
    */
    	int foo = 42;
    

    Nach deinen ganzen "kleinen Fragen" kannst du problemslos googeln.

    ----EDIT
    Ach, hab ich vergessen. Für #include <stdio.h> bekommst du noch einen 👎 und deine Ausgabe ist in dieser Form ebenfalls suboptimal, sofern du C++ programmieren willst.



  • mazeli schrieb:

    #define MAX 010+2 : Warum gibt der mir den Wert 10 aus und bei 2*Max 18? Versteh das nicht, heisst es nicht 10+2=12 beim define?

    Zum ersten Teil: 010 ist eine Oktale Konstante.
    Zum zweiten Teil: #define bewirkt eine stumpfe Textersetzung - und danach greift die übliche Regel "Punktrechnung vor Strichrechnung".



  • fuer allgemeine Fragen www.wikipedia.org und www.google.de

    #define MAX 010+2 : Warum gibt der mir den Wert 10 aus und bei 2*Max 18? Versteh das nicht, heisst es nicht 10+2=12 beim define?

    weil 8 +2 = 10 und 2*8 + 2 = 18,

    0x -> Hex konstante
    fueherende 0, oktalzahl,
    rest decimal


Anmelden zum Antworten