Diskussion:C-Programmierung: Variablen und Konstanten/Archiv1

Seiteninhalte werden in anderen Sprachen nicht unterstützt.
Aus Wikibooks

Kann es sein, dass der Platzhalter für einen Integer im printf/scanf Formatstring %d (und nicht %i) ist? --Stefan Kögl 17:58, 2. Aug 2004 (UTC)

Bin mir auch nicht 100% sicher. Beim googeln habe ich gerade beide Varianten gefunden: [1] -- Daniel B 18:24, 2. Aug 2004 (UTC)

> Typ und Name werden immer zu Beginn der Funktion
Du schreibst von Funktionen, obwohl noch gar nicht geklärt ist, was eine Funktio ist. Außerdem ist es nicht zwingend eine Funktion, sondern ein Anweisungsblock.

Gut, kannst du ändern. -- Daniel B 18:37, 2. Aug 2004 (UTC)

> Variablennamen sollten Sie deshalb immer mit Kleinbuchstaben schreiben.
NPOV! Das ist nur eine von vielen oft verwendeten Möglichkeiten wie zB CamelCase. Eine Übersicht dazu könnte man in C-Programmierung: Programmierstil unterbringen.

Das halte ich nicht für NPOV. In der gesamten mir bekannten Literatur werden Variabelennamen Klein geschrieben. Praktisch alle Richtlinien für Programmierer halten sich daran. Warum sollte sich Wikibooks nicht auch daran halten? Eine gewisse Empfehlung sollten wir abgeben, damit der Programmierer keinen unleserlichen Code produziert. -- Daniel B 18:37, 2. Aug 2004 (UTC)
Es ist trotzdem kein Standard sondern wenn man im Team programmiert meist team-intern festgelegt, bzw wenn man allein programmiert Geschmackssache. Ich würde vorschlagen, im Text nur zu erwähnen, dass man in einem Programm durchgehend eine Casing-Methode verwendet und dass wir in C-Programmierung: Programmierstil die bekanntesten vorstellen. ok? --Stefan Kögl 18:49, 2. Aug 2004 (UTC)
Währe mir lieber, wenn man den Anfängern gleich von Beginn einige Grundregeln für das sauberer Programmieren beibringt, bevor das Kind in den Brunnen gefallen ist. Vielleicht währe die folgende Formulierung aber besser: Im diesem Wikibook werden deshalb alle Variablennamen Klein geschrieben. Diese Regel wird auch von den meisten Programmieren eingehalten -- Daniel B 19:01, 2. Aug 2004 (UTC)
Ist ok, kannst du es bitte dementsprechend ändern? --Stefan Kögl 19:07, 2. Aug 2004 (UTC)

> Der Compiler beachtet aber nur die ersten 32 Zeichen (einige Compiler sogar nur die ersten 8). Innerhalb dieser muß die Variable eindeutig definiert werden.
Wo nimmst du diese Informationen her? IMHO sinds doch 255 (oder warens 256?) Zeichen...

Wer ich erst mal entfernen, bis ich weiß wo ich das gelesen habe. Bin mir jetzt auch nicht mehr sicher wo das war. -- Daniel B 18:37, 2. Aug 2004 (UTC)

--Stefan Kögl 18:26, 2. Aug 2004 (UTC)


Ich habe den Satz "Schlüsselworte sind solche Worte, die vom Compiler selbst verwendet werden, wie beispielsweise printf, scanf oder main (alle C Schlüsselworte siehe Referenz )" entfernt, weil printf, scanf keine Schlüsselwörter sind. Sie können immer als lokale Variablennamen verwendet werden und wenn die entsprechenden Header-Dateien nicht eingebunden sind auch als Funktionsnamen.

Mein Fehler -- Daniel B 19:50, 2. Aug 2004 (UTC)

> Sie dürfen außerdem nur aus dem C - Zeichensatz bestehen [...]
Was ist der C-Zeichensatz?! --Stefan Kögl 19:21, 2. Aug 2004 (UTC)

Siehe [2] -- Daniel B 19:50, 2. Aug 2004 (UTC)
Meines Erachtens nach ist "C-Zeichensatz" kein allgemein gebräuchlicher Begriff... Könnten wir den nicht ersetzen, beispielsweise durch "Buchstaben, Zahlen und dem Unterstrich"? --Stefan Kögl 16:51, 3. Aug 2004 (UTC)
OK. Werde es ändern. -- Daniel B 17:38, 3. Aug 2004 (UTC)

> Neurere Compiler lassen es aber auch zu, Variablen innerhalb der Funktion zu deklarieren.
IMHO sind das Compiler, die sich teilweise an C++-Standards halten. Wer also mit einem reinen C-Compiler compiliert wird so also seine Probleme haben (außerdem ists meiner Meinung nach kein schöner Stil)... Streichen wir den Satz? --Stefan Kögl 18:42, 3. Aug 2004 (UTC)

Meinetwegen -- Daniel B 18:47, 3. Aug 2004 (UTC)

Ist nicht auch die Größe der anderen Typen (von char abgesehen) abhängig von der Rechnerarchitektur? --Stefan Kögl 20:43, 10. Aug 2004 (UTC)

1.) Du meinst die Typen short und long? Kernighan und Ritchie schreiben in ihrem Buch "Programmieren in C" zu diesem Thema:
Short belegt oft 16 Bits, long 32 Bits und int entweder 16 oder 32 Bits. Es steht jedem Übersetzer frei, sinnvolle Größen für seine Maschine zu wählen, nur mit der Einschränkung, dass short und int wenigstens 16 Bits haben, long mindestens 32 Bits, und dass short nicht länger als int und int nicht länger als long sein darf. '
Ich denke eine solche exakte Beschreibung verwirrt den Anfänger eher als das es ihm hilft. In der Referenz sollte es jedoch in jedem Fall berücksichtigt werden.

Find ich OK! --Stefan Kögl 20:33, 11. Aug 2004 (UTC)
Gut. Soll ich das in die Referenz übernehmen oder willst du das tun? -- Daniel B 16:33, 12. Aug 2004 (UTC)
Könntest du das machen? Am besten als Fußnote, ok? --Stefan Kögl 14:17, 13. Aug 2004 (UTC)

2.) Du hast die Zeilennummerierung entfernt? Ich weiß nicht ob dies sinnvoll ist. Bei längeren Programmen, die sicherlich noch kommen werden, wird es schwierig, etwas zu erklären, wenn man nicht auf eine bestimmte Zeile im Programm hinweisen kann. -- Daniel B 17:00, 11. Aug 2004 (UTC)

Ja, ich war der Meinung, dass es bei solch kurzen Programmen noch nicht nötig ist. Bei längeren Programmen wird es dann auf jeden Fall erforderlich sein. OK? --Stefan Kögl 20:33, 11. Aug 2004 (UTC)
Ist OK -- Daniel B 16:33, 12. Aug 2004 (UTC)

> Alle Variablen, die mit dem Schlüsselwort const deklariert werden, können innerhalb des Programms nicht mehr verändert werden.
imho geht das doch - über das Casten der Variable (oder wars ein Zeiger auf diese Variable?) auf den Basistyp (also ohne const). Sollen wir das irgendwo erwähnen oder lassen wir das aufgrund des sehr unsauberen Stils weg? --Stefan Kögl 20:54, 18. Aug 2004 (UTC)

Mir ist keine Möglichkeit bekannt, eine const - Variable zu ändern. Vielleicht geht das mit einem Programmiertrick, sauber Programmierstiel dürfte das aber kaum sein. Also: Weglassen. -- Daniel B 17:25, 19. Aug 2004 (UTC)

Sollte mit manchen Compilern funktionieren:

const int var = 1;
int *zeiger = &var; // besser: int *zeiger = (int*) &var;
*zeiger = 0;

Nur auf manchen Compilern, weil ein solches Verhalten lt ANSI-Standard afaik gar nicht definiert wird. Trotzdem weglassen? Oder als Bsp zum Programmierstil? --Stefan Kögl 10:45, 20. Aug 2004 (UTC)

Wenn ich das Programm mit Visual C++ 6.0 übersetze bekomme ich nur eine Warnung in Zeile 2.
Ich halte das aber für keinen guten Programmierstiel. Könnte man durchaus im Kapitel Programmierstiel erwähnen (als schlechtes Beispiel sozusagen) -- Daniel B 15:42, 20. Aug 2004 (UTC)
GCC 3.3.3 beschwert sich nicht und kompiliert. --Stefan Kögl 19:01, 23. Aug 2004 (UTC)

Ich gehe mit einer Auflösung von 800 x 600 in Internet. Bei mir sehen die langen Kommentarzeilen nicht gerade gut aus, weil ich immer nach links scrollen muss. Währe es vielleicht doch besser, das Programm gesondert zu besprechen? -- Daniel B 18:18, 24. Aug 2004 (UTC)


Ich finde das letzte Bsp mit der for-Schleife -die erst zwei Kapitel später behandelt wird- etwas ungünstig, ließe sich da nicht ein besseres finden?

Ja, dass ist mir auch schon aufgefallen. Vielleicht sollte man auf das zweite Beispiel verzichten und im ersten Beispiel noch eine weiter Variable deklarieren, die dann im Block nicht überdeckt wird. Das zweite Beispiel sagt ja eigentlich sowieso nicht viel aus. -- Daniel B 16:22, 20. Okt 2004 (UTC)

Es ist ja schön, wenn sich jemand Mühe gibt, aber mal ehrlich: das meiste hier ist ziemlich amateurhaft, mit vielen Fehlern, unpräziser Begrifflichkeit und in Unkenntnis z.B. des C-Standards. Im momentanen Zustand kann ich nur von diesem Wikibook abraten. Da gibt es viel professionellere Seiten im Web, die schon eine Menge mehr Peer-Review erfahren haben.