Coding Styles Horror
-
dazu fällt mir zb. if(!(buf=malloc(..))) exit(1); ein... in einem C++ constructor
da hab ich lieber Heinzelmännchen.
-
DrGreenthumb schrieb:
dazu fällt mir zb. if(!(buf=malloc(..))) exit(1); ein... in einem C++ constructor
da hab ich lieber Heinzelmännchen.
exits in Code von Bibliotheken hab ich auch ein Paar mal gesehen. Grausam sowas...
-
zwutz schrieb:
#ifndef RANDOMCLASS_H #define RANDOMCLASS_H using namespace std; class RandomClass { ... }; #endif
derartiges findet sich in einigen sehr oft verwendeten Bibliotheken unserer Software
`
na und? normal, wa.
-
hääääh? schrieb:
na und? normal, wa.
using namespace im HEADER-File.
-
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
-
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
Oder er hatte Alien OS 2.0 das hat keine ASCII Tabelle.
-
Besser mieser und gehackter Code aber die Anwendung geht, als Theoretiker, die den ganzen Tag nur über Konstrukte nachdenken und letztlich nix schaffen.
-
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.