Coding Styles Horror
-
RealistX schrieb:
Theoretiker, die den ganzen Tag nur über Konstrukte nachdenken und letztlich nix schaffen.
Hab ich noch nie einen gesehen.
-
Nachdenken! schrieb:
char inttochar(int u) { if(u==0){return '0';} if(u==1){return '1';} if(u==2){return '2';} if(u==3){return '3';} if(u==4){return '4';} if(u==5){return '5';} if(u==6){return '6';} if(u==7){return '7';} if(u==8){return '8';} if(u==9){return '9';} } int chartoint(char v) { if(v=='0'){return 0;} if(v=='1'){return 1;} if(v=='2'){return 2;} if(v=='3'){return 3;} if(v=='4'){return 4;} if(v=='5'){return 5;} if(v=='6'){return 6;} if(v=='7'){return 7;} if(v=='8'){return 8;} if(v=='9'){return 9;} }
Da hatte wohl jemand nicht viel Ahnung von der ASCII Tabelle
Naja, das ist die portabelste Version dieser Funktionen. Sie funktioniert auf beliebigen Architekturen die char und int unterstützen...
-
µµµµønsŧS schrieb:
Naja, das ist die portabelste Version dieser Funktionen. Sie funktioniert auf beliebigen Architekturen die char und int unterstützen...
Außer natürlich, es würde im Sprachstandard stehen, daß der Zeichensatz die Ziffern von 0 bos 9 aufeinandefolögfend unterzubringen hat.
-
Wäre dann ein switch/case-Konstrukt nicht immer noch vorzuziehen?
-
Switcha schrieb:
Wäre dann ein switch/case-Konstrukt nicht immer noch vorzuziehen?
Warum nicht einfach das?
char inttochar(int u) { return *("0123456789" + u); }
-
TyRoXx schrieb:
Switcha schrieb:
Wäre dann ein switch/case-Konstrukt nicht immer noch vorzuziehen?
Warum nicht einfach das?
char inttochar(int u) { return *("0123456789" + u); }
also
char inttochar(int u) { return "0123456789"[u]; }
oder
char inttochar(int u) { return u["0123456789"]; }
-
^^für hexziffern ist die array-methode gut, wegen der lücke zwischen '9' und 'a'.
ansonsten natürlich: #define to_char(x) ('0'+(x))
-
wie wärs mit:
int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z; //statt int Buchstabe[27];
-
Tim06TR schrieb:
wie wärs mit:
int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z; //statt int Buchstabe[27];
und dann noch das:
int *Buchstabe[] = {&a,&b,&c,&d, ...};
-
;fricky schrieb:
^^für hexziffern ist die array-methode gut, wegen der lücke zwischen '9' und 'a'.
ansonsten natürlich: #define to_char(x) ('0'+(x))
Oder
return '0'+x;
Habt ihr in C noch keine optimierende Compiler? Doch, die habt ihr, da bin ich ganz sicher.
Im Übrigen war#define to_char(x) ('0'+(x))
natürlich falsch.
Besser wäre, wenn man schon so weit in der Geschichte zurückgehen will,#define to_char(x) ((char)('0'+(x)))
-
volkard schrieb:
Im Übrigen war
#define to_char(x) ('0'+(x))
natürlich falsch.
nö, das geht schon so. ein cast würde z.b. beim codewarrior-compiler das tolle feature unterdrücken, dass eine warnung kommt, bei addition zweier konstanten, deren ergebnis nicht mehr in ein char passt.
statt cast vielleicht besser sowas:#define DECIMAL_DIGIT_TO_CHAR(x) ((x)>=0&&(x)<=9 ? '0'+(x) : -1)
-
Typen sind Dir egal.
-
volkard schrieb:
Typen sind Dir egal.
nicht wirklich, aber 'char' und 'int' sind schon ziemlich kompatibel, bis auf kleine unterschiede.
-
;fricky schrieb:
bis auf kleine unterschiede.
Und warum die ignorieren?
Es wird doch mit Sicherheit ein Kasper in einem weiteren Makro typeof oder sizeof benutzen. Zwing ihn doch nicht, die Doku zu lesen, das tut er eh nicht. Machs einfach richtig. to_char() sollte schon einen char liefern.
-
volkard schrieb:
Machs einfach richtig. to_char() sollte schon einen char liefern.
durch die abfrage 0<=x<=9 wird doch schon mieser input rausgefiltert. und diese '0' ist doch sowieso vom typ 'int', das stört sonst auch nicht.
char c = '0'; // <-- absolut ok so char c = (char)'0'; // <-- das macht kein mensch, würde aber zu diesem thread passen
-
Jetzt weiß ich endlich, warum Du die Objektorientierung nicht begreifst.
-
volkard schrieb:
Jetzt weiß ich endlich, warum Du die Objektorientierung nicht begreifst.
...und wirst mir bestimmt gleich wieder scott meyer's 'effective c++' nahelegen. *fg*
-
;fricky schrieb:
volkard schrieb:
Jetzt weiß ich endlich, warum Du die Objektorientierung nicht begreifst.
...und wirst mir bestimmt gleich wieder scott meyer's 'effective c++' nahelegen. *fg*
Nein. Dir fehlen dann vermutlich doch die nötigsten Grundlagen. Vielleicht solltest Du zunächst ein paar Jahrzehnte mit Logo und dann QBasic üben.
-
volkard schrieb:
Vielleicht solltest Du zunächst ein paar Jahrzehnte mit Logo und dann QBasic üben.
logo finde ich irgendwie toll. ich hatte mal'n atari-st, da war das drauf.
-
Verdammt, geht endlich schlafen ihr nerdigen Streithammel, es ist spät.
Echt jeder Thread wird hijacked.