Veröffentlicht 11. März 200916 j Code: #include<stdio.h> int main() { int i,j; char ch; for (i=0; i<16;i++) { for (j=0; j<8; j++) { ch = i + 16 *j; if (ch >=32 && ch <=126) printf(" %X %c",ch,ch); else printf(" %X %c", ch,' '); } printf("\n"); } return 0; } In diesen Programm verstehe ich eine Zeile nicht und zwar die hier : Code: ch = i + 16 *j; Was wird hier getan ? Bitte um Hilfe und danke im voraus. mfg soufian
11. März 200916 j Hallo soufian! Nun, im Prinzip ganz einfach: Der Variablen ch wird ein Wert zugewiesen, der aus dem 16-fachen von j plus i besteht. Das ch eine char-variable ist, stört weiter nicht, da char = 8bit integer. Bei der Ausgabe wird ch als Zeichen interprätiert, also entspricht i + 16 *j dem Ascii-Wert des Zeichens. So kann man das selbe auf zwei verschiedene Weisen ansprechen Etwas verwirrend :upps , aber irgendwann sehr praktisch, wenn man der passende Groschen gefallen ist. tsg
11. März 200916 j wenn ich aber die Zeile ändere das es so aussieht: #include<stdio.h> int main() { int i ,j; char ch; for (i=0; i<16;i++) { for (j=0; j<8; j++) { [SIZE="6"] ch = 15 + 16*7;[/SIZE] if (ch >=32 && ch <=126) printf(" %X %c",ch,ch); else printf(" %X %c", ch,' '); } printf("\n"); } return 0; } kommt dann ein etwas verändertes Ergebnis
11. März 200916 j kommt dann ein etwas verändertes Ergebnis Soll das eine Frage sein? Ja, wenn du den Code änderst, tut ein Programm normalerweise etwas anderes. So auch hier.
11. März 200916 j Ich meine damit sollte es nicht die gleiche Wirkung haben wie das i + 16*j? weil i = 15 und j = 7
11. März 200916 j i ist nicht 15 und j ist nicht 7. Die Variablen haben bei jedem Schleifendurchlauf (i für die äußere und j für die innere Schleife) einen anderen Wert. Nur beim letzten Durchlauf der inneren Schleife ist i 15 und j 7.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.