Paar kleine Fragen
-
Moin Moin
Hab paar kleinere Fragen.
Hab hier folgendes Programm
#include <stdio.h>
#define MOD 5
#define MAX 010+2int 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