Code-Schnipsel
Moderatoren: broesel, Martin Conrad, PatrickThema: [EDIT] - Einfachste Codeschnipsel
Re: Einfachste Codeschnipsel
broesel (webmaster) am 03.02.2006 um 11:26
bool x;
if(<expression>) {
return(x);
} else {
return(!x);
}
// oder:
<expression>?x:!x;
Man testet also, ob eine Bedingung zutrifft und gibt dementsprechend wahr oder falsch zurück.
Code dieser Form kann aber immer wie folgt abgekürzt werden:
return(<expression>);
Das liegt daran, dass <expression> selbst bereits entweder "wahr" oder "falsch" erzeugt und man nicht großartig entscheiden muss, welches der beiden es denn nun ist um dementsprechend etwas zurückzuliefern.
Ob ein String (ungleich NULL) leer ist, läßt sich also am besten so testen:
#define is_empty(str) (*(str))
Pointer dereferenzieren; ist str ein nullterminierter String der Länge 0, so ist der Wert des Ausdrucks '\0', andernfalls ungleich '\0' (also im allgemeinen entweder "wahr" oder "falsch").
Pedanten werden noch einen Vergleich einbauen, also etwa (*(str) == '\0') für den Fall, dass sich der Wert von '\0' mal ändert (denn '\0' hat "nur" bei ASCII und EBCDIC den Wert 0).
Die Länge eines Strings läßt sich trotzdem immer noch am besten mit strlen() ermitteln... Wenn es mal soweit kommt, dass man an einem Funktionsaufruf sparen muss (unsere CPUs machen das in einem Cycle), hat man größere Probleme als Stringlängen ermitteln; das größte Problem werden Konditionale sein (auf unseren CPUs ein Performance-Hammer), aber wie man die los wird, habe ich ja gerade beschrieben.
Zitat:
C ist definitiv nicht "die Einsteigersprache"
Da bin ich mir nicht so sicher. Es ist jedenfalls nicht üblich, mit C anzufangen. Ob das gut oder schlecht ist, sei dahingestellt. Meine persönliche Ansicht ist, dass man am besten mit C oder einer funktionalen Sprache anfängt. Warum?
Vorteile von C als Einsteigersprache:
Man lernt direkt wie es "richtig" gemacht wird. Man lernt Pointer, dynamische Speicherverwaltung. Man lernt, sich Gedanken zu machen bevor man loslegt, weil man sonst nicht weit kommt.
Wenn man in C erstmal ein bißchen I/O kann und weiß, welchen Aufwand bestimmte Aktionen erfordern, wird man automatisch in Perl/PHP/Java usw. ein besserer Programmierer.
Wenn Edgar Dijkstra wüsste, was heute alles als "Einsteigersprache" gilt, würde er sich im Grab umdrehen...
Gruss,
Philip
--
The C Programming Quiz
- bitte Fragen einreichen :)
Re: Einfachste Codeschnipsel
TP am 03.02.2006 um 21:31
Zitat:
Da bin ich mir nicht so sicher. Es ist jedenfalls nicht üblich, mit C anzufangen. Ob das gut oder schlecht ist, sei dahingestellt. Meine persönliche Ansicht ist, dass man am besten mit C oder einer funktionalen Sprache anfängt. Warum?
Vorteile von C als Einsteigersprache:
Man lernt direkt wie es "richtig" gemacht wird. Man lernt Pointer, dynamische Speicherverwaltung. Man lernt, sich Gedanken zu machen bevor man loslegt, weil man sonst nicht weit kommt.
Wenn man in C erstmal ein bißchen I/O kann und weiß, welchen Aufwand bestimmte Aktionen erfordern, wird man automatisch in Perl/PHP/Java usw. ein besserer Programmierer.
Wenn Edgar Dijkstra wüsste, was heute alles als "Einsteigersprache" gilt, würde er sich im Grab umdrehen...![]()
Deine persönliche Meinung ist sicherlich in Ordnung (es ging hier aber eingentlich um Fakten) und ich stimme deinen Argumenten natürlich auch zu aber bedenke, dass C nicht die leichteste Sprache (zum Erlernen) ist und manche Programmierer, welche die OOP nutzen, eher dazu raten, gleich mit einer OO Sprache anzufangen, damit nachher keine Mischung von OO und prozeduralem Code vorkommt.
Dies nur, damit hier nicht nur PRO-Argumente kommen.
[EDIT] - Re: Einfachste Codeschnipsel
scusi71 am 20.09.2008 um 17:32
#include <assert.h>
inline _Bool empty (const char *const restrict text)
{
assert (NULL != text);
return ('\000' == *text);
}
