011
20.06.2004, 13:46 Uhr
~iboT
Gast
|
ok, nächstes Beispiel..falls ich euch nerv meldet euch ;-)
C++: |
#include<iostream> #include<conio.h> using namespace std; #define max 26 void main() { char werte[max]; char *zz, i, x; for( i=0; i<max;i++) werte[i]=(char)i+'a';
for(i=1;i<=7;i++) { if (i==1) zz=&werte[1]; else if (i==2) { x=*(zz+3); zz=&x; } else if (i==3) *zz='a'-'A'; else if (i==4) { zz=werte+2; zz+3; } else if (i<6) zz=&werte['o'-'a'];
else if (i==7) { zz=werte; x=*(zz++); x=*(&zz[i]+3); zz=&x; } printf("\n %d \t %c \n",i,*zz); cout<<werte; } }
|
Die Frage ist hier mal wieder was ausgegeben wird. Ist eigentlich einfach, ich habs so nach einigen Versuchen rausgekriegt dass "be cool" rauskommt ;-)
Mal allgemeinere Fragen: z.B.: else if (i==3) *zz='a'-'A'; Wird da der ASCII-Wert voneinander abgezogen? Wie wird da gerechnet, bildet er den ASCII-Wert von 'a' , zieht davon dann den von 'A' ab und castet das Ergebnis wieder auf Char?? Hmmm
for( i=0; i<max;i++) werte[ i ]=(char)i+'a'; Im letzten Semester wurde mir eingetrichtert dass jede Char-Kette als abschlusszeichen ein /0 enthält und deshalb der Feldindex um 1 größer gewählt werden muss als geplant. Hier Hat das Feld 26 Elemente und enthält 26 Buchstaben?!? Warum geht das hier auf einmal?! Dieser Post wurde am 20.06.2004 um 13:54 Uhr von Pablo editiert. |