Unterscheidung char, integer in der if schleife..?
-
if(a) return true; else return false; lieber return a;
warum sollte ich a zurückgeben?
Lieber isdigit und isalpha nutzen, wie ~frickels vorgeschlagen hat.
stimmt schon,
ich hab halt früher solche probleme selbst probiert zu lösen in dem ich mir selber funktionen/prodzeduren geschrieben habmhh, hat sich bei mir irgendwie eingebürgert das ich statt return 0 immer return EXIT_SUCCESS schreibe ^^
-
Ravendark schrieb:
if(a) return true; else return false; lieber return a;
warum sollte ich a zurückgeben?
Wenn a true ist, gibst du true zurück. Wenn a false ist, gibst du false zurück. Dann kannst du auch gleich a selbst zurückgeben, und sparst dir das if.
-
Ravendark schrieb:
if(a) return true; else return false; lieber return a;
warum sollte ich a zurückgeben?
'a' steht für den vergleich im 'if', also z.b:
return (c > 47 && c < 58);
gibt 0 oder 1 zurück.
-
Wenn a true ist, gibst du true zurück. Wenn a false ist, gibst du false zurück. Dann kannst du auch gleich a selbst zurückgeben, und sparst dir das if.
stimmt schon,
aber ich hab doch eine boolean-funktion, also muss ich ja auch einen bool-schen wert (also 0 oder 1) zurückgeben...EDIT: thx an ~fricky, stand gerade auf dem schlauch
...klar dann kann ich mir die if-abfrage sparen:
bool pruefeChar(char c) { return c > 47 && x < 58; }
-
Ravendark schrieb:
aber ich hab doch eine boolean-funktion, also muss ich ja auch einen bool-schen wert (also 0 oder 1) zurückgeben...
das ergebnis des vergleichs ist doch schon 0 oder 1.
-
Ravendark schrieb:
aber ich hab doch eine boolean-funktion, also muss ich ja auch einen bool-schen wert (also 0 oder 1) zurückgeben...
Und was ergibt der Ausdruck c > 47 && c < 58?
-
lass dich nich lumpen von den selbsternannten experten hier, jeder bessere compiler aus'm kaugummi automat für 10cent macht daraus eh den gleichen code. wenn du deinen übersichtlicher findest, dann lass ihn ruhig so
-
okay...danke schonmal für die schnellen antworten:)
ich mach mich jetzt mal ans lesen und probieren..
-
helfer1ein schrieb:
jeder bessere compiler aus'm kaugummi automat für 10cent macht daraus eh den gleichen code.
darum gehts doch nicht, sondern darum, dass man redundanten quelltext besser vermeiden sollte. würdes du z.b. sowas machen?
int gimme_two (int a) { if (a == 2) return a; else return 2; }
-
man muss code nicht bis zur unleserlichkeit kompaktieren, nur weil es geht
-
helfer1ein schrieb:
man muss code nicht bis zur unleserlichkeit kompaktieren, nur weil es geht
Redundanter Quellcode ist eine mögliche Quelle von Bugs, das hat erstmal nichts mit "Unlerserlichkeit" oder sowas zu tun, sondern mit Codequalität.
-
Quatsch mit Soße. Guter Quellcode ist leicht verständlicher Quellcode, nicht irgendein kryptischer Zeichensalat. Nur weil man in C programmieren kann wie ein Roboter auf Speed, heißt das nicht, daß man dies tun sollte! Diese Hacker-Ethik ist seit 30 Jahren out.
-
helfer1ein schrieb:
Guter Quellcode ist leicht verständlicher Quellcode, nicht irgendein kryptischer Zeichensalat.
richtig, aber völlig überflüssiger quellcode ist schlechter quellcode. die realitätsfernen freaks aus dem c++-forum hätten die frage des op vielleicht mit klassen, iteratoren, stringstream und schön viel std:: darin gelöst (ausser volkard, er ist der einzige mit weitblick, der sich da rumtreibt). aber wie's so treffend heisst: 'die dümmsten programmierer schreiben die dicksten programme'.
-
helfer1ein schrieb:
Guter Quellcode ist leicht verständlicher Quellcode, nicht irgendein kryptischer Zeichensalat.
a)
bool charPruefen(char c) { if(c > 47 && c < 58) { return true; } return false; }
b)
bool pruefeChar(char c) { return c > 47 && x < 58; }
Alles was in b) steht, findet man auch in a). Wie also kann b) kryptisch sein, a) aber nicht? Erklär mal bitte
-
~fricky schrieb:
die realitätsfernen freaks aus dem c++-forum hätten die frage des op vielleicht mit klassen, iteratoren, stringstream und schön viel std:: darin gelöst (ausser volkard, er ist der einzige mit weitblick, der sich da rumtreibt). aber wie's so treffend heisst: 'die dümmsten programmierer schreiben die dicksten programme'.
oh mann. man darf ja ruhig eine programmiersprache nicht mögen und das auch sagen, aber was sollen denn dieses ständige sinn-, grund- und hirnlose bashing, die provokationen und beleidigungen bringen? scheint ja schon zwanghaft zu sein bei dir.
es wissen alle über deine meinung bescheid, keinen interessierts, also klappe zu. bitte.
-
ʎʞ& schrieb:
~fricky schrieb:
die realitätsfernen freaks aus dem c++-forum hätten die frage des op vielleicht mit klassen, iteratoren, stringstream und schön viel std:: darin gelöst (ausser volkard, er ist der einzige mit weitblick, der sich da rumtreibt). aber wie's so treffend heisst: 'die dümmsten programmierer schreiben die dicksten programme'.
oh mann. man darf ja ruhig eine programmiersprache nicht mögen und das auch sagen, aber was sollen denn dieses ständige sinn-, grund- und hirnlose bashing, die provokationen und beleidigungen bringen?
ok, tut mir leid. ich habe überreagiert. das lag daran, dass ich vorhin im c++ forum zwei haarsträubende threads gelesen habe. ich sollte besser einen grossen bogen um das c++ unterforum machen.
-
a)
bool charPruefen(char c) { if(c > 47 && c < 58) { return true; } return false; }
b)
bool pruefeChar(char c) { return c > 47 && c < 58; }
in den ersten beiden oder drei jahren bevorzugt man a). später wechselt man langsam zu b).
es ist grundsätzlich egal, was man hier schreibt, denn die profis erkennen beide muster auf anhieb und wer's noch nicht tut, muss das lernen.als anregung hätte ich folgende sachen:
return c > 47 && c < 58;
wird zu
return 47 < c && c < 58;
damit stehts eher da wie im mathebuch und ist als intervall leichter zu erkennen.wird zu
return 48 <= c && c <= 57;
geschlossene sind noch leichter, weil ich so denke c liegt zwischen 48 und 57 und wenn man nix dazu sagt, sind die grenzen drin.(ok, halboffen ist auch nicht schlecht im C-umfeld).
wird zu
return '0' <= c && c <= '9';
denn der compiler hat ja ne ascii-tabelle eingebaut. so sehe ich irgendwie gleich, was gemeint ist. sah ich zwar auch vorher, aber jetzt sehe ich es noch gleicher.
-
Ich hätte isdigit trotzdem noch gleicher verstanden.
-
helfer1ein schrieb:
Diese Hacker-Ethik ist seit 30 Jahren out.
jaja, leider, sieht man an der Unmenge unausgeriefter Software, wie z.b. Spiele und so.
ʎʞ& schrieb:
scheint ja schon zwanghaft zu sein bei dir.
es wissen alle über deine meinung bescheid, keinen interessierts, also klappe zu. bitte.genauso zwanghaft wie alle 'auf-frickies-pinkate-c++-bashing-Komentare' fallende Antworten, die dumm genug sind, darauf zu reagieren
@volkard: du meinst eher
return '0' <= c && c <= '9';
, '\0' == 0
-
supertux schrieb:
@volkard: du meinst eher
return '0' <= c && c <= '9';
, '\0' == 0jup, klar. ich korrigiere es gleich auch mal oben.