Für Anfänger bzw. Advanced Coders - Ein kleiner Buchtip ! {
-
in der praxis kann man mit standatd-c++ wohl kaum programm verkaufen. ohne farben? ohne maus? ohne sound?
und siehe da, es werden lösungen verlangt, die manchmal funktionieren.und wertebereiche? ja, schnell und komplett oder lahm mit einschränkung? du magst gerne nur komplette sachen machen. aber das ist dann spielerei, die keiner haben mag.
nee, was mich eigentlich nervt ist, daß man keine 5 zailen backen kann, ohne daß einer daherkommt und sagt "es gibt aber auf dem mond ne maschine, wo das nicht klappt". standard-c++ und das c++, das gesprochen wird, sind zwei unterschiedliche dinge. ich kann nix dafür, daß c++ so standardisierd wurde. aber ich nicht jeden furz mitmachen und postuliere: ein byte hat 8 bit und ints werden binär dargestellt wie auf intel-rechnern oder genauso aber mit anderer byte-reihenfolge und >>1 wirkt wie /2.
mir ist bewußt, daß ich damit meinen wirkungskreis auf 99.9% der rechner einschränke.
-
Original erstellt von Bashar:
man muß nur zum Schluß die herausgekommenen Bits irgendwie zusammensammeln, also braucht man noch (im einfachsten Fall) den << Operator.genau. dazu reicht ja + (der ausdruck wird evtl sehr lang). also geht jede funktion von int auf int ohne if und konsorten.
-
Ich fand Dimahs Lösung witzig anstatt 3 if die 3 while zu benutzen
-
int f(int i) { if(i < 0) { return -1; } if(i == 0) { return 0; } if(i > 0) { return 1; } }
-
int sign(int x) { int result; do { result = x; x /= 2; } while(x); return result; }
*grins*
-
@Bashar: geil
-
Ich hätte eine Idee....
ich habs noch nicht probiert - vielleicht gehts ja !int function(int x) { return (x<0)-(x>0); }
-
Blödsinn, mein fehler:
int function(int x) { return (x>0)-(x<0); }
-
Original erstellt von <--..-->:
**ich habs noch nicht probiert - vielleicht gehts ja !int function(int x) { return (x<0)-(x>0); }
**
die vorzeichen sind immer gefährlich.
aber gute idee. ich vermute, diese lösung schwebte dem author* im sinn.* wer findet den fehler?
-
wie wärs damit:
int func(int wert) { return ((bool(wert)-(bool(((char*)&wert)[0]&0x80 == 0x80))-bool(((char*)&wert)[0]&0x80 == 0x80))); }
Naja oder etwas hübscher so:
int func(int wert) { char* c_wert = (char*)&wert; bool minuszahl(c_wert[0]&0x80 == 0x80); bool nichtnull = bool(wert)-minuszahl; return (nichtnull-minuszahl); }