C Idiome und wenig bekannte Fakten [geschlossen]

7

Okay, ich habe viele Posts über seltsame Idiome und gängige Praktiken in C gesehen, die vielleicht nicht anfänglich intuitiv sind. Vielleicht sind ein paar Beispiele in Ordnung

Elemente in einem Array:

%Vor%

Odd Array Indizierung:

%Vor%

Single Zeile if / else / while / für safe #defines

%Vor%

Meine Frage an die Experten von C-Programmierern lautet: Welche Idiome , Praktiken , Code-Snippits oder wenig bekannte Fakten zeigt viel C-Code, ist aber vielleicht nicht sehr intuitiv, bietet aber einen guten Einblick in C-Programmierung?

    
Scott 29.12.2009, 17:44
quelle

3 Antworten

11

Der "Pfeiloperator" zum Herunterzählen von n-1 nach 0:

%Vor%

Es ist nicht sehr häufig, aber es ist eine interessante Illustration, dass in gewisser Weise das Initialisieren / Testen / Aktualisieren von Teilen einer for -Schleife Konvention ist. Das ist das übliche Muster, aber Sie können immer noch beliebige Ausdrücke einfügen.

Es ist auch eine nette kleine Erinnerung daran, wie lexikalische Analyse funktioniert.

    
Boojum 29.12.2009 17:52
quelle
5

Da jemand es trotzdem erwähnen wird, könnte es auch ich sein: Duffs Gerät . Es ist ein schönes Beispiel für die Art und Weise, wie Etiketten in C funktionieren, und das Verständnis hat mir beim ersten Mal eine "Aha-Erfahrung" gebracht. Dies ist sein ursprünglicher Code:

%Vor%

Heute würde man register nicht verwenden und die alte Funktionsdefinition vermeiden.

    
Alok Singhal 29.12.2009 17:57
quelle
4

Der Komma-Operator, obwohl er vollkommen gut dokumentiert ist (K & amp; R usw.), erscheint in ziemlich viel algorithmischem Code und ist oft eine Überraschung für viele Programmierer, die ihm vorher noch nicht begegnet sind. Es wird oft verwendet, um einige Schleifenkonstrukte zu vereinfachen:

%Vor%

Der obige Code multipliziert die Array-Elemente 0 bis 9 mit 9 bis 0, wobei verschachtelte Schleifen vermieden werden.

Bei Verwendung des Komma-Operators werden sowohl der erste als auch der zweite Ausdruck ausgewertet. Das Ergebnis des ersten Ausdrucks wird ignoriert, und das Ergebnis des zweiten Ausdrucks wird zurückgegeben.

    
mikecsh 29.12.2009 17:54
quelle

Tags und Links