strlen implementierung
-
Hi,
mann, bitte lasst doch das != 0 bzw. == 0 in if-Abfragen weg, sowas tut mir richtig im Auge weh.
ChrisM
-
Con@n schrieb:
wie wärs denn mit einer Rekusiven Lösung: [...]
Warum nicht?
C++ ist plattformunabhängig. Man kann also nicht pauschal sagen, dass die iterative Version schneller ist. Es könnte Maschinen geben, bei denen die Rekursion besser läuft.
-
Wo benutzt hier einer if?? mach die äuglein auf mein kleiner hasepups
-
while eben. ist ja fast dasselbe
-
Hi,
dann halt while().
Ich hab schnell weitergescrollt, damit ich mir das nicht noch länger anschauen muss.
Ne, im Ernst, wenn ihr eine bool-Variable kopieren wollt, schreibt ihr dann auch:
bool2 = (bool1 != 0);
oder
bool2 = !!bool1;
?ChrisM
-
Es könnte Maschinen geben, bei denen die Rekursion besser läuft.
auf keinen fall
-
Vier Versuche:
std::size_t l1(char*s){std::size_t i=0;for(;s[i];++i);return i;} std::size_t l2(char*s){std::size_t i=0;while(s[i])++i;return i;} std::size_t l3(char*s){long i=-1;j:if(!s[++i])return i;goto j;} std::size_t l4(char*s){char*r=s;while(*(r++));return--r-s;}
(die letzten beiden sind nicht ganz equivalent, dafür kürzer wegen dem Typ... und dreckiger...)
Gruss
++hardcoder
PS: nein, das ist nicht mein typischer coding-style
-
warum denn beim zweiten nicht gleich
std::size_t l2(char*s){std::size_t i=0;while(s[++i]);return i;}
grüße Con@n
-
Ne, im Ernst, wenn ihr eine bool-Variable kopieren wollt, schreibt ihr dann auch:
bool2 = (bool1 != 0);
oder
bool2 = !!bool1;
?Nein zum Kopieren von bools nicht, da es keinen Sinn ergibt, sowohl bezogen auf die Lesbarkeit, noch auf die Semantik, noch auf die Geschwindigkeit der Ausführung. Bei einem Test, ob eine Zahl 0 ist macht es semantisch Sinn, ist leicht lesbar, nur die Codegeschwindigkeit könnte ohne optimierenden Compiler leiden. Ohne den Vergleich, also unter Ausnutzung, das int implizit nach bool gecastet werden kann ist es semantisch schlecht, für Programmierer in C++ leicht leesbar und die Geschwindigkeit ist Optimial.
Jaetzt darfst du entscheiden.
-
Ich hätte noch einen einfachen Vorschlag:
int strlen(const char *p) { char *q=p; while(*q++); return q-p+1; }
ist ein Beispiel aus "Die C++ Programmiersprache" 2.Auflage S.61
-
Warum der lokale Zeiger? Zeiger werden in C++ by value übergeben.
-
Helium schrieb:
Warum der lokale Zeiger?
Weil der Anfangswert noch gebraucht wird.
Zeiger werden in C++ by value übergeben.
Stroustrup hat das wahrscheinlich auch schon mitbekommen.
Wobei ich daran zweifle, dass das Programm da gültiges C++ ist, da es nicht const-korrekt ist.
-
Ist euch schon mal aufgefallen, das ich jeden Montag nur Müll verzapfe. Wenn ihr das nächste mal was von mir lest, ignoriert es, wenn es von einem Montag stammt.